【发布时间】:2020-04-10 03:55:43
【问题描述】:
我想通过 Azure API 管理公开一些 API(逻辑应用程序、函数)。 它们工作正常,所以我决定添加 OAuth2 自动化。
我一步一步跟着https://docs.microsoft.com/fr-fr/azure/api-management/api-management-howto-protect-backend-with-aad:
- 在 Azure AD 中注册一个应用程序(后端应用程序)来表示 API。
- 在 Azure AD 中注册另一个应用程序(客户端应用程序)以表示需要调用 API 的客户端应用程序。
- 在 Azure AD 中,授予允许客户端应用调用后端应用的权限。
- 将开发者控制台配置为使用 OAuth 2.0 用户授权调用 API。
- 添加 validate-jwt 策略以验证每个传入请求的 OAuth 令牌。
- 也可以使用 Postman 进行测试
在“validate-jwt”策略步骤之前一切正常。 当我添加它时,我得到一个“401 - 未经授权。访问令牌丢失或无效。” 我可以在 Developer Console 和 Postman 中获取令牌,但只要我执行 API 调用...401!
当我使用 jwt.ms 检查令牌的内容时,我注意到 aud 参数与后端应用程序 ID 无关。 令牌中的值为“00000003-0000-0000-c000-000000000000”,而后端应用ID为“16caXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXc0”。
我的想法不多了,需要一些 Azure 大师的帮助! 非常感谢您的帮助...
根据 MS 文档,在入站策略下方:
<policies>
<inbound>
<validate-jwt header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
<openid-config url="https://login.microsoftonline.com/MY_AD_TENANT_ID/.well-known/openid-configuration" />
<required-claims>
<claim name="aud">
<value>MY8BACKEND_APP_ID_GUID</value>
</claim>
</required-claims>
</validate-jwt>
</inbound>
<backend>
<forward-request />
</backend>
<outbound />
<on-error />
</policies>
【问题讨论】:
标签: azure oauth-2.0 azure-api-management