【问题标题】:Azure Active Directory Oauth 2.0 Client Credentials Flow with API Management Access Token issue带有 API 管理访问令牌问题的 Azure Active Directory Oauth 2.0 客户端凭据流
【发布时间】:2021-08-20 06:28:09
【问题描述】:

我一直在努力使我的 Azure Active Directory Oauth 2.0 客户端凭据流与 API 管理一起使用。但我也通过邮递员获得身份验证。但作为回报,我没有得到任何访问令牌,只是一堆 HTML。我怎样才能解决这个问题?应用程序的设置与文档完全一致,包括 JWT Policy 的验证。

基本上,我希望我的客户端应用程序使用 Oauth 2.o 与我的 azure API 连接,而无需使用提供的客户端 ID/秘密获得任何同意。我现在正在尝试使用 API 管理控制台开箱即用的 ECHO API 进行设置。

谢谢

Postman Access token Error Screen

【问题讨论】:

  • 我认为问题出在范围上。一旦我用 graph.microsoft.com/.default 替换我的应用程序的范围。一切似乎都运行良好。为什么
  • 我不能使用我定义的范围来获得身份验证。使用我的自定义范围我得到错误
  • 错误:AADSTS500011:在名为 的租户中找不到名为 api:///app_permissions_allow 的资源主体。如果租户管理员未安装应用程序或未获得租户中任何用户的同意,则可能会发生这种情况。您可能已将身份验证请求发送到错误的位置。这只发生在我使用示波器时。

标签: azure oauth-2.0 azure-active-directory azure-api-management


【解决方案1】:

要将应用程序权限与您自己的 API(而不是 Microsoft Graph)一起使用,您必须首先通过在 Azure 门户中的 API 应用注册中定义范围来expose the API。然后,configure access to the API 通过在客户端应用程序的应用程序注册中选择这些权限。如果您未在 API 的应用注册中公开任何范围,您将无法在 Azure 门户中的客户端应用程序注册中指定对该 API 的应用程序权限。

例如,如果我发送了自定义名称(如 https://testwebapp.in/.default)的范围参数,而没有在 Azure AD 中配置与应用程序 ID URI 相同的名称,那么这是一种预期行为,您将收到错误 AADSTS500011。

请求中的scope参数应该是你想要的资源的资源标识符(应用ID URI),后缀.default。对于 Microsoft Graph 示例,该值为 https://graph.microsoft.com/.default。此值告诉 Microsoft 标识平台,在您为应用配置的所有直接应用程序权限中,端点应该为与您要使用的资源关联的权限颁发令牌。

参考:https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-client-creds-grant-flow#application-permissions

【讨论】:

    猜你喜欢
    • 2019-04-28
    • 2021-09-01
    • 2018-02-08
    • 2019-01-02
    • 2019-01-03
    • 2021-01-24
    • 1970-01-01
    • 2017-10-12
    • 2017-09-06
    相关资源
    最近更新 更多