Тело пользовательского ответа для validate-jwt в Azure APIM - PullRequest
0 голосов
/ 02 апреля 2020

Я проверяю токен JWT из Azure API Manager. Я ищу варианты для изменения тела ответа при сбое проверки. Согласно документации 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 Manager?

1 Ответ

1 голос
/ 02 апреля 2020

Мне удалось исправить это с помощью следующей политики преобразования.

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