azure apim 中的 JWT 验证失败错误
JWT validation failure error in azure apim
我目前正在尝试使用以下文档实施 Oauth2.0 来保护 API
https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-protect-backend-with-aad
并且目前正在使用由 azure apim 提供的 DEMO CONFERENCE API 来测试实现。
并且当前在开发人员门户中的测试期间收到错误消息:
"message": "JWT Validation Failed: Claim value mismatch: aud=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxx.."
通过解码及其匹配将传递的令牌与声明值进行比较。
我有如下的 jwt 令牌验证策略
<inbound>
<base />
<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid." require-expiration-time="false" require-signed-tokens="false">
<openid-config url="https://login.microsoftonline.com/xxxxxxxxx-07c8-xxxxx-xxxx-xxxxxxxxx/.well-known/openid-configuration" />
<required-claims>
<claim name="aud" match="all" separator="-">
<value>xxxxxxxx-xxxxx-489e-a26e-xxxxxxxx</value>
</claim>
</required-claims>
</validate-jwt>
</inbound>
首先,您需要验证您的 JWT 令牌。然后,当我们注册一个应用程序时,它会注册到版本 V1 并且访问令牌颁发者带有 sts url,如果我们尝试使用 V2 传递访问令牌,它失败的 V2 颁发者是 login.microsoft.com
。
所以解决方法是进入 AD 中已注册应用程序的清单文件 "accessTokenAcceptedVersion": 2
。参考这个issue.
我目前正在尝试使用以下文档实施 Oauth2.0 来保护 API
https://docs.microsoft.com/en-us/azure/api-management/api-management-howto-protect-backend-with-aad
并且目前正在使用由 azure apim 提供的 DEMO CONFERENCE API 来测试实现。
并且当前在开发人员门户中的测试期间收到错误消息:
"message": "JWT Validation Failed: Claim value mismatch: aud=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxx.."
通过解码及其匹配将传递的令牌与声明值进行比较。
我有如下的 jwt 令牌验证策略
<inbound>
<base />
<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid." require-expiration-time="false" require-signed-tokens="false">
<openid-config url="https://login.microsoftonline.com/xxxxxxxxx-07c8-xxxxx-xxxx-xxxxxxxxx/.well-known/openid-configuration" />
<required-claims>
<claim name="aud" match="all" separator="-">
<value>xxxxxxxx-xxxxx-489e-a26e-xxxxxxxx</value>
</claim>
</required-claims>
</validate-jwt>
</inbound>
首先,您需要验证您的 JWT 令牌。然后,当我们注册一个应用程序时,它会注册到版本 V1 并且访问令牌颁发者带有 sts url,如果我们尝试使用 V2 传递访问令牌,它失败的 V2 颁发者是 login.microsoft.com
。
所以解决方法是进入 AD 中已注册应用程序的清单文件 "accessTokenAcceptedVersion": 2
。参考这个issue.