azure - 如何使用或访问 Azure AD 公开的 API(MyApis)?
问题描述
我在 AAD 中注册了我的机密客户和资源客户。机密客户端具有访问资源客户端的 API 权限。在我使用我的凭据从机密客户端登录后,如何向资源客户端发出请求?
基于ms 文档
例如,如果您的 Web API 的应用程序 ID URI 是https://contoso.com/api并且您的范围名称是 Employees.Read.All,则完整范围是: https://contoso.com/api/Employees.Read。全部
该示例不足以让我理解访问令牌在哪里?
解决方案
您可以使用身份验证代码流来获取访问令牌。
首先,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
推荐阅读
- angular - ng-template 中的动态标记并与 ng-container *ngTemplateOutlet 一起使用
- javascript - Cookie 与 SameSite 一起发送为“无”,但 Safari 收到“严格”
- java - Jade - 事件循环的哪种行为?
- identityserver4 - 没有主题的 Identity Server 4 扩展授权
- python - 使用 pandas DataFrame,我如何保留每 7 行?
- npm - 尽管具有正确的 package.json,但 Npm 安装错误
- reactjs - 如何在 React Native 中每个项目旁边呈现的文本旁边添加一个按钮?
- java - 在 JAVA 中计算两个日期之间的天数(捕获 ParseException 错误)
- c# - 将嵌套在动态对象中的 C# 列表中的第一项和最后一项序列化为 JSON
- python - 在python中绘制一个具有三个y轴和一个x轴的直方图