我们已经设置了v1 Azure AD应用程序,并与this setup guide密切配合。
我们已成功对Azure AD Graph API进行基于客户端凭据的oAuth调用。此外,对于v2应用程序,我们已成功对Microsoft Graph API进行基于客户端凭据的调用。
但是,我们希望创建一个同时使用Azure AD Graph和Microsoft Graph的多租户应用程序,因此我们需要使用v1应用程序调用Microsoft Graph。我们还认为基于客户端凭证的授权是最干净的方法。
使用v1应用程序调用Microsoft Graph时,我们在响应呼叫时看到以下错误:
InvalidAuthenticationToken. Access token validation failure.
这是一个示例令牌有效负载:
{
"aud": "00000002-0000-0000-c000-000000000000",
"iss": "https://sts.windows.net/a0482499-f164-4e2f-8564-909dabfc74cb/",
"iat": 1509393647,
"nbf": 1509393647,
"exp": 1509397547,
"aio": "Y2NgYNhb5ao7R09dJ+qAWf/tDcEnAA==",
"appid": "eb7e150b-8a01-4c63-8e6c-31acbf1f0730",
"appidacr": "1",
"idp": "https://sts.windows.net/a0482499-f164-4e2f-8564-909dabfc74cb/",
"oid": "16dd4917-534c-4633-88fc-dcb84e9b9a99",
"roles": [
"Directory.Read.All",
"Directory.ReadWrite.All"
],
"sub": "16dd4917-534c-4633-88fc-dcb84e9b9a99",
"tenant_region_scope": "NA",
"tid": "a0482499-f164-4e2f-8564-909dabfc74cb",
"uti": "Zm-DzqIyX0u8RsXaO9kcAA",
"ver": "1.0"
}
我们的令牌是从以下端点生成的,我们的域名为{tenant}
:
https://login.microsoftonline.com/{tenant}/oauth2/token
在我们的应用程序中,我们为Microsoft Graph添加了以下权限。 (基本上我们抓了很多东西才能看到有效的东西)
申请权限:
委托权限:
答案 0 :(得分:0)
您的令牌的受众群体是: 00000002-0000-0000-c000-000000000000
。
Microsoft Graph的受众群体是: 00000003-0000-0000-c000-000000000000
这是Azure AD Graph API的资源ID,而不是Microsoft Graph API。如果您使用的是auth库,则无法说明,但如果您使用的是ADAL,则需要执行新的AcquireTokenSilent(...)
请求访问https://graph.microsoft.com
除了Azure AD Graph API请求之外。
确保在Azure Portal中您还为应用配置了调用Microsoft Graph的权限。
答案 1 :(得分:0)
我们在另一篇文章中找到了完整的解决方案: Call Microsoft Graph API Using Azure AD 1.0 Endpoint Client Credentials Flow
我们需要使用api变量'resource'而不是'scope'