oauth-2.0 - 使用客户端凭据 OAuth 的 Azure AD Graph API
问题描述
我正在尝试对' https://graph.windows.net/ {{tenantId}}/accounts?api-version=1.6进行 API 调用
我首先使用 client_credentials 令牌调用来获取访问令牌。这是电话:
POST /{{tenantId}}/oauth2/token HTTP/1.1
Host: login.microsoftonline.com
Content-Type: application/x-www-form-urlencoded
User-Agent: PostmanRuntime/7.19.0
Host: login.microsoftonline.com
grant_type=client_credentials&client_id={{client_id}}&client_secret={{client_secret}}&\
resource=https%3A%2F%2Fgraph.windows.net
这将返回一个 JWT(我删除了与此问题无关的元素):
{
"aud": "https://graph.windows.net",
"iss": "https://sts.windows.net/e1642542-781d-481e-a194-1c271a68a5f1/"
"roles": [
"Application.ReadWrite.OwnedBy",
"Application.ReadWrite.All"
],
}
您可以看到 aud 设置为https://graph.windows.net并且指示了适当的应用程序角色。
然而,当我对 graph.windows.net 端点进行帐户调用时,我收到一个错误:
{
"odata.error": {
"code": "Authentication_MissingOrMalformed",
"message": {
"lang": "en",
"value": "Access Token missing or malformed."
}
}
}
对于 /accounts 调用,我添加了一个 Authorization 标头,其值设置为 Bearer:(访问令牌)。相同的令牌在 jwt.io 中被完美解码,所以我知道令牌本身很好。
有任何想法吗?
解决方案
Azure 已停止更新 Azure AD Graph API。在此文档中,建议使用 Graph API 而不是 Azure AD Graph API。
从数据有效负载中相应地设置范围参数。
推荐阅读
- spring-cloud-stream - 使用 `@AutoConfigureAfter(TraceAutoConfiguration.class)` 时缺少 bean 'zipkin2.reporter.Sender'
- java - 如何使用 Spring“注入”结构化配置信息?
- .net - 为什么 Serilog 不使用 WriteTo.MSSqlServer 接收器登录到表?
- python - 让计算机按下按钮
- c - 从 c 中的函数返回二维数组时出错
- php - 从 MySQL 查询中从百万行中选择第 N 条记录
- attachment - 如何使用 RingCentral Fax API C# 查看/下载发送的传真
- python-3.x - 宏功能内的气流覆盖“ds”
- angular - 下拉菜单栏
- java - 未使用局部变量的值