Azure active directory 以来宾身份登录到外部租户(B2B)时的图形API访问权限

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

我正在进行UWP训练,并让它发挥作用。我对它进行了一些调整,因为我正在开发的应用程序注册在一个目录中,而不是我的AAD帐户所属的目录中。我是该目录中的来宾。我做了以下更改:

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的支持工程师进一步研究此问题

谢谢, -坦率的