使用客户端 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 Id
和secret
公开API
。
用户如何需要访问API
将使用Clients ID
请求。
如果我们将client ID
列入白名单以获取API
访问权限,则可以使用Client ID
和Client 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以用户身份访问它