Azure active directory 使用Microsoft Graph API访问多个SharePoint联机网站

Azure active directory 使用Microsoft Graph API访问多个SharePoint联机网站,azure-active-directory,microsoft-graph-api,sharepoint-online,Azure Active Directory,Microsoft Graph Api,Sharepoint Online,我们开发了一个LOB应用程序,利用AAD和Microsoft Graph 使用案例是,用户将使用他/她自己的组织提供的AAD凭据登录到应用程序 登录后,用户需要访问SharePoint Online租户上不同于用户组织的库。使用Microsoft Graph,我们可以将身份验证令牌作为请求的一部分进行共享,但无论何时尝试访问除用户自己组织拥有的实例以外的SharePoint实例,我们都会收到400错误 例如,如果用户属于contoso.com,则他/她和所有来宾用户都可以访问contoso.Sh

我们开发了一个LOB应用程序,利用AAD和Microsoft Graph

使用案例是,用户将使用他/她自己的组织提供的AAD凭据登录到应用程序

登录后,用户需要访问SharePoint Online租户上不同于用户组织的库。使用Microsoft Graph,我们可以将身份验证令牌作为请求的一部分进行共享,但无论何时尝试访问除用户自己组织拥有的实例以外的SharePoint实例,我们都会收到400错误

例如,如果用户属于contoso.com,则他/她和所有来宾用户都可以访问contoso.SharePoint.com上的SharePoint库。如果用户试图访问myworld.com的库(该用户是外部用户),graph API代码将抛出400错误

用户可以手动登录到myworld.sharepoint.com,并可以访问库等。但当尝试使用graph API执行相同操作时,它会抛出400


有没有办法解决这个问题?

这是不可能的。代币由AAD租户(或个人账户的普通MSA租户)发行。您不能简单地从一个租户获取令牌来使用它访问另一个租户


请注意,这与互联网域名无关。如果Contoso在
Contoso.microsoftonline.com
租户中拥有并验证了
Contoso.com
myworld.com
,那么所有三个域都指向同一租户,并表示资源的别名

嗯,我没有真正使用过SharePoint,但我可以说,您的想法可能有缺陷。访问令牌始终仅对一个Azure AD租户有效,因为该令牌包含它。要访问特定的租户,用户需要登录到该Azure AD租户。据我所知,Graph API背后的整个概念是让用户使用相同的凭据/访问令牌跨多个域访问信息。显然,就SharePoint而言,Graph api无法做到这一点。。。至少还没有如本文所述。那么Graph API的用途是什么?我在GitHub上看到的是,这是Graph API当前的一个问题,正在解决中。Azure AD是联邦的,如果它只用于创建id的域,那么就不需要云身份管理。Graph是一个API,它覆盖了过去产品/服务特定的API林。与EWS、SharePoint API、AAD Graph API、Office Graph等不同,您可以跨所有这些服务调用单个API。也就是说,您将
租户
混淆了。域是一个较旧的构造,图形将愉快地跨域。这是一个不同于单一令牌的场景,它提供对完整的独立租户的访问abc@contoso.com如果contoso是一个租户,则无法访问另一个租户xyz.com的资源,例如SharePoint文档?换句话说,如果我作为外部用户添加到SharePoint,我就不可能以编程方式访问与我共享的文件。我唯一能做的就是访问SharePoint网站,登录并访问文件?我刚刚尝试过,我能够同步来自不同租户但用户id相同的不同库abc@contoso.com,如我在上面的评论中所述,使用OneDrive应用程序。我只想在我自己的代码中复制相同的功能。显然这是可以做到的,我只需要帮助找到方法:(如果你是租户的外部用户,那么你需要显式地向该租户进行身份验证。你不能重用来自家庭租户的令牌。