【发布时间】:2020-02-28 04:46:04
【问题描述】:
我正在尝试对 '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 中被完美解码,所以我知道令牌本身很好。
有什么想法吗?
【问题讨论】:
标签: oauth-2.0 azure-active-directory azure-ad-graph-api