首页 > 解决方案 > 带有 API 管理访问令牌问题的 Azure Active Directory Oauth 2.0 客户端凭据流

问题描述

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

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

谢谢

邮递员访问令牌错误屏幕

标签: azureoauth-2.0azure-active-directoryazure-api-management

解决方案


若要将应用程序权限与您自己的 API(而不是 Microsoft Graph)一起使用,您必须首先通过在 Azure 门户中的 API 应用程序注册中定义范围来公开 API。然后,通过在客户端应用程序的应用注册中选择这些权限来配置对 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


推荐阅读