azure - 如何使用或访问Azure AD公开的API(MyApis)?

标签 azure asp.net-web-api azure-active-directory

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

基于 ms docs

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

这个例子不足以让我理解访问 token 在哪里?

最佳答案

您可以使用auth code flow获取访问 token 。

首先,通过浏览器中的网址获取代码。在此步骤中您需要登录。

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}

enter image description here

<小时/>

关于隐式授权流程:

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

注意:要使其正常工作,您需要首先在门户中的“隐式授予”部分下选择访问 token ,然后导航到“应用程序注册”->“您的应用程序”->“身份验证”。

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

关于azure - 如何使用或访问Azure AD公开的API(MyApis)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63699207/

相关文章:

azure - 限制 Azure Active Directory 同步

azure - JWT 响应中缺少刷新 token

wcf - 如果我可以使用 ASP.net Web API,我是否需要 WCF

c# - 无法在 MongoDB Web API 中按 ID 获取文档

c# - 使用带有客户端 key 的 Azure AD 通过 asp.net core 后端对 native 应用程序进行身份验证

azure - 从 Terraform 中的 map 列表中输出特定值

azure - 固定大小的存储桶 - 嵌套 JSON 数组

authentication - 通过代码使用 SSO 在多台机器上授权 WebAPI

azure-active-directory - 如何在 Azure Active Directory B2C 中添加具有本地名称的用户?

Azure OAuth 登录 - 正在工作,现在收到 AADSTS700022/AADSTS700023 错误