首页 > 解决方案 > 如何使用或访问 Azure AD 公开的 API(MyApis)?

问题描述

我在 AAD 中注册了我的机密客户和资源客户。机密客户端具有访问资源客户端的 API 权限。在我使用我的凭据从机密客户端登录后,如何向资源客户端发出请求?

基于ms 文档

例如,如果您的 Web API 的应用程序 ID URI 是https://contoso.com/api并且您的范围名称是 Employees.Read.All,则完整范围是: https://contoso.com/api/Employees.Read。全部

该示例不足以让我理解访问令牌在哪里?

标签: azureasp.net-web-apiazure-active-directory

解决方案


您可以使用身份验证代码流来获取访问令牌。

首先,code通过浏览器中的 url 获取。您需要在此步骤中登录。

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id={your-client-id}
&response_type=code
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=query
&scope=https://contoso.com/api/Employees.Read.All
&state=12345

然后,使用代码获取 access_token。

POST  https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded

client_id={your-client-id}
&scope=https://contoso.com/api/Employees.Read.All
&code={the code from the previous step}
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&grant_type=authorization_code
&client_secret={your-client-secret}

在此处输入图像描述


关于隐式授权流程:

此流程通常用于单页应用程序,隐式授权比其他授权存在更多风险。请检查隐式授权是否适合您的应用程序,请参见此处。如果没有,我仍然建议您使用身份验证代码流。

注意:要让它工作,您需要先在门户的隐式授权部分下选择访问令牌,导航到应用注册 -> 您的应用程序 -> 身份验证。

https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id={your-client-id}
&response_type=token
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&scope=https://contoso.com/api/Employees.Read.All
&response_mode=fragment
&state=12345
&nonce=678910
&prompt=none

推荐阅读