【发布时间】:2017-09-08 02:44:04
【问题描述】:
是否可以使用通过 Azure Active Directory 1.0 端点获得的访问令牌和客户端凭据 OAuth 2 流来访问 Microsoft Graph API?
例如:
POST https://login.microsoftonline.com/{mytenant}.onmicrosoft.com/oauth2/token
grant_type=client_credentials,
client_id={app id registered in azure portal},
client_secret={registered app key},
resource=https://graph.microsoft.com
当我使用从该请求返回的令牌时,尝试调用 https://graph.microsoft.com/v1.0/groups 时出现以下错误。
解码的 JWT
标题
{
"typ": "JWT",
"alg": "RS256",
"x5t": "HHByKU-0DqAqMZh6ZFPd2VWaOtg",
"kid": "HHByKU-0DqAqMZh6ZFPd2VWaOtg"
}
有效载荷
{
"aud": "00000002-0000-0000-c000-000000000000",
"iss": "https://sts.windows.net/{tenant id}/",
"iat": 1504804880,
"nbf": 1504804880,
"exp": 1504808780,
"aio": "Y2FgYDiiO8/s3smXRdxLg87zBPRNAwA=",
"appid": "{client id}",
"appidacr": "1",
"idp": "https://sts.windows.net/{tenant id}/",
"oid": "{enterprise app object id}",
"sub": "{enterprise app object id}",
"tenant_region_scope": "NA",
"tid": "{tenant id}",
"uti": "uIzrJNpHcEGXoQ4ZKZgqAA",
"ver": "1.0"
}
{
"error": {
"code": "InvalidAuthenticationToken",
"message": "Access token validation failure.",
"innerError": {
"request-id": "3537d28e-a061-4430-aef5-4a75bf791d90",
"date": "2017-09-07T16:38:26"
}
}
}
我已确保应用程序具有通过门户分配的正确权限。在Required Permissions > Application Permissions下,选择“Read and write all groups”。
我有什么遗漏或者这不可能吗?
【问题讨论】:
-
您能否在jwt.io 之类的服务中检查 JWT,并确保它包含具有必要权限的 roles 声明?
-
JWT 中似乎没有列出任何角色。在这种情况下,我需要在请求中添加什么内容吗?
-
您是否在设置应用权限要求的地方按下了授予权限按钮?此外,请确保您请求权限的是 Microsoft Graph API。
-
是的,我在点击授予权限前后都试过了。我还验证了 API 是 Microsoft Graph。我添加了指向我的权限设置屏幕截图的链接。
-
你能分享一下 JWT 令牌吗? (删除任何敏感属性)如果缺少角色声明是一个问题,我希望错误是“权限不足”。此错误意味着令牌本身有问题。
标签: azure-active-directory microsoft-graph-api