Azure APIM:如果令牌验证失败,不返回错误

问题描述 投票:0回答:1

我正在使用 validate-jwt 参考来验证我的令牌,效果非常好。

<validate-jwt token-value="@((string)context.Variables["access_token"])"
          failed-validation-httpcode="401"
          failed-validation-error-message="Access token is invalid"
          output-token-variable-name="jwt-token">
    <openid-config url="{{well-known-url}}" />
</validate-jwt>

我不明白的是:如果验证失败,我如何在我的策略中返回错误?

我想以另一条路径继续执行我的策略(例如,通过将变量设置为

false
,然后我可以使用
<choose>
进行分支)。

这可能吗?

azure azure-api-management
1个回答
0
投票

您可以使用给定的策略来处理验证失败错误,其中我显式设置状态和自定义消息。

<policies>
    <inbound>
        <base />
        <set-variable name="isTokenValid" value="false" />
        <set-variable name="access_token" value="*******" />
        <choose>
            <when condition="@((string)context.Variables["access_token"] != null)">
                <validate-jwt token-value="@((string)context.Variables["access_token"])" failed-validation-httpcode="401" failed-validation-error-message="Access token is invalid" output-token-variable-name="jwt-token">
                    <openid-config url="https://login.microsoftonline.com/******/v2.0/.well-known/openid-configuration" />
                </validate-jwt>
                <set-variable name="isTokenValid" value="true" />
            </when>
            <otherwise>
                <set-variable name="isTokenValid" value="false" />
            </otherwise>
        </choose>
    </inbound>
    <backend>
        <base />
    </backend>
    <outbound>
        <base />
    </outbound>
    <on-error>
        <base />
        <choose>
            <when condition="@(context.Variables["isTokenValid"] == "true")">
            </when>
            <otherwise>
                <!-- Do something else if the token validation failed -->
                <return-response>
                    <set-status code="200" reason="Invalid Token" />
                    <set-body>Proceed further</set-body>
                </return-response>
            </otherwise>
        </choose>
    </on-error>
</policies>

enter image description here

enter image description here enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.