使用客户端 ID 使用基于 AAD 令牌的身份验证公开 API

Posted

技术标签:

【中文标题】使用客户端 ID 使用基于 AAD 令牌的身份验证公开 API【英文标题】:Expose API with AAD token based Authentication using client ID 【发布时间】:2020-11-11 04:36:42 【问题描述】:

我想使用基于AAD token 的身份验证使用Clients Idsecret 公开API

用户如何需要访问API 将使用Clients ID 请求。 如果我们将client ID 列入白名单以获取API 访问权限,则可以使用Client IDClient Secret 访问API

像 Kusto 服务访问一样。

所以需要帮助我们如何使用 Azure 服务配置这个 API

【问题讨论】:

见***.com/questions/38494279/… 【参考方案1】:

根据您的问题,您公开了一个受 Azure 保护的 api,然后您需要使用客户端 ID 和客户端密码请求访问令牌来访问该 api。

首先,您必须创建另一个应用程序作为客户端应用程序,然后使用此客户端应用程序访问 api 应用程序,并且您需要将应用程序权限授予客户端应用程序。建议您使用client credential flow。

接下来,您需要通过编辑 api 应用程序清单来定义应用程序权限。 This 就是一个例子。

然后,将应用程序权限授予客户端应用程序。

接下来的两个步骤是使用客户端应用程序完成的:

1.首先需要征得管理员的同意:

GET https://login.microsoftonline.com/tenant/adminconsent?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&state=12345
&redirect_uri=http://localhost/myapp/permissions

2.使用客户端ID和客户端密码请求访问令牌:

POST /tenant/oauth2/v2.0/token HTTP/1.1           //Line breaks for clarity
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded

client_id=535fb089-9ff3-47b6-9bfb-4f1264799865
&scope=api://your-app-id/.default
&client_secret=qWgdYAmab0YSkuL1qKv5bPX
&grant_type=client_credentials

尝试使用令牌访问您的 API。

【讨论】:

以上是关于使用客户端 ID 使用基于 AAD 令牌的身份验证公开 API的主要内容,如果未能解决你的问题,请参考以下文章

我面临使用 AAD 令牌作为身份验证的邮递员获取容器 ACL 和设置容器 ACL REST API 的问题

无法验证 AAD 访问令牌 - IDX10511:签名验证失败

我是否可以使用AAD保护REST API(在春季启动时说)并从该AAD以用户身份访问它

在基于令牌的身份验证中使用刷新令牌是不是安全?

无法根据访问令牌对用户进行身份验证 - MS Graph API C#

基于 Spring Security 令牌的身份验证