Azure active directory 以来宾身份登录到外部租户(B2B)时的图形API访问权限
我正在进行UWP训练,并让它发挥作用。我对它进行了一些调整,因为我正在开发的应用程序注册在一个目录中,而不是我的AAD帐户所属的目录中。我是该目录中的来宾。我做了以下更改:Azure active directory 以来宾身份登录到外部租户(B2B)时的图形API访问权限,azure-active-directory,microsoft-graph-api,azure-ad-graph-api,msal,Azure Active Directory,Microsoft Graph Api,Azure Ad Graph Api,Msal,我正在进行UWP训练,并让它发挥作用。我对它进行了一些调整,因为我正在开发的应用程序注册在一个目录中,而不是我的AAD帐户所属的目录中。我是该目录中的来宾。我做了以下更改: PublicClientApp = PublicClientApplicationBuilder.Create(ClientId) .WithAuthority(AzureCloudInstance.AzurePublic, Te
PublicClientApp = PublicClientApplicationBuilder.Create(ClientId)
.WithAuthority(AzureCloudInstance.AzurePublic, TenantId)
.Build();
其中,TenantId是注册应用程序的目录的标识符,我是来宾,而不是我的主目录
呼吁https://graph.microsoft.com/v1.0/me 它包含在教程中,工作正常,并将我的个人资料信息返回到UWP应用程序
我想将我的个人资料照片拉入应用程序,所以我将graph api url更改为https://graph.microsoft.com/v1.0/me/photo/$value,但这返回了一个错误:
{
"error": {
"code": "NoPermissionsInAccessToken",
"message": "The token contains no permissions, or permissions can not be understood.",
"innerError": {
"request-id": "xxxxxx-xxxxx-xxx-xxxx-xxxx",
"date": "2019-05-16T17:15:28"
}
}
}
应用程序注册具有图形api的User.Read、User.ReadBasic.All和openid
当我使用点击/me/photo/$value url时,它可以正常工作
我的猜测是,我的问题是由于针对非权威目录进行身份验证造成的,该目录提供了对graph api访问受限的令牌。我找不到任何关于B2B/客户帐户的graph api访问限制的文档
我的想法是,如果我想这样做,我必须与我的主目录建立第二次登录会话,可能还有第二次应用程序注册,并使用该会话中的令牌访问我的个人资料,但我正在寻找关于如何解决此问题的建议,而不要求用户登录两次。使用MSAL的解决方案将是理想的。查看您收到的错误,您的问题可能与权限有关,而实际上与它是来宾这一事实无关。如果是因为你是客人,你应该会收到一个不同的错误 你能解码你的访问令牌吗?您可以通过以下文章获得解密的fiddler跟踪来实现这一点: 然后解码对Microsoft photo端点的get调用的承载头 如果您确实拥有正确的权限,并且满足此处列出的文档中的所有要求: 我建议提交Azure支持票证,以便让Microsoft的支持工程师进一步研究此问题 谢谢, -坦率的