首页 > 解决方案 > Azure APIM 中 validate-jwt 的自定义响应正文

问题描述

我正在验证来自 Azure API 管理器的 JWT 令牌。我正在寻找验证失败时更改响应正文的选项。根据文档https://docs.microsoft.com/en-us/azure/api-management/api-management-access-restriction-policies

<validate-jwt
    header-name="name of http header containing the token (use query-parameter-name attribute if the token is passed in the URL)"
    failed-validation-httpcode="401"
    failed-validation-error-message="Invalid Token"
    token-value="expression returning JWT token as a string"
    require-expiration-time="true|false"
    require-scheme="scheme"
    require-signed-tokens="true|false"
    clock-skew="allowed clock skew in seconds"
    output-token-variable-name="name of a variable to receive a JWT object representing successfully validated token">

如果我设置

  failed-validation-httpcode="401" and  failed-validation-error-message="Invalid Token"

验证失败时的响应是

{
    "statusCode": 401,
    "message": "Invalid Token"
}

现在我需要将正文中的“statusCode”更改为“status”响应

{
    "status": 401,
    "message": "Invalid Token"
}

在 Azure API 管理器中可以吗?

标签: azureazure-devopsazure-api-managementapi-management

解决方案


我已经设法通过以下转换策略解决了这个问题。

 <on-error>
     <choose>
         <when condition="@(context.Response.StatusCode == 401)">
            <find-and-replace from="statusCode" to="status" />
         </when>
    </choose> 
</on-error>

推荐阅读