通过 Microsoft Graph API 进行 OneDrive/SharePoint 的多租户访问问题

问题描述 投票:0回答:1

在这种情况下:

“XX”代表我们的应用程序。 “YY”代表客户的应用。 客户端已在 Azure AD 的“YY”租户中注册了一个应用程序,并为其提供了必要的图形 API 权限(例如 Sites.FullControl.All 或 Files.ReadWrite.All)。

我们的应用程序 (XX) 必须获得“YY”租户中管理员的同意。管理员需要批准我们的应用程序 (XX) 才能访问他们的资源。

一旦获得同意,我们的应用程序(XX)将被授权访问“YY”租户中的资源。

客户 (YY) 必须授予我们的应用程序 (XX) 访问其租户中的 OneDrive 或 SharePoint 资源的权限。这是通过向 /permissions 发出 Microsoft Graph API POST 请求来完成的。

此步骤确保我们的应用程序 (XX) 可以访问客户 (YY) 租户中的特定资源。

授予权限后,我们可以使用应用程序的 (XX) 客户端 ID、机密和租户从客户端 (YY) OneDrive/SharePoint 获取文档。

目前,我们已经使用我们的应用程序 (XX) 凭据生成了访问令牌,该令牌应该有权访问客户端 (YY) 租户中的资源。尽管如此,它仍然无法正常运行,我们需要在客户端环境中注册两个应用程序,并具有两个不同的权限。

我们是不是漏掉了什么?

azure sharepoint azure-active-directory microsoft-graph-api sharepoint-online
1个回答
0
投票

要访问其他租户中的 OneDrive 或 SharePoint 资源,请检查以下内容:

TenantA
创建了 Microsoft Entra ID 应用程序并授予 API 权限:

enter image description here

TenantB
中,创建服务主体并授予管理员同意:

New-AzADServicePrincipal -ApplicationId <AppIDOfTenantAApp>

enter image description here

授予所选站点权限(可选):

POST https://graph.microsoft.com/v1.0/sites/{sitesIdofTenantB}/permissions
Content-Type: application/json

{
  "roles": ["write"],
  "grantedToIdentities": [{
    "application": {
      "id": "TenantAAppID",
      "displayName": "SharePointApp"
    }
  }]
}

enter image description here

使用 TenantB

 租户 ID 生成 
访问令牌

https://login.microsoftonline.com/TenantBTenantID/oauth2/v2.0/token

client_id:TenantAAppID
client_secret:TenantAClientSecret
scope↵:https://graph.microsoft.com/.default
grant_type:client_credentials

enter image description here

确保访问令牌中存在角色

enter image description here

现在使用此访问令牌来获取

TenantB
中的文档:

我能够成功获取

TenantB
网站的驱动:

https://graph.microsoft.com/v1.0/sites/SiteID/drives/bDriveID

enter image description here

您可以根据您的需求参考这个MsDoc获取API。

参考:

sharepoint - 访问 Microsoft Graph API 进行多租户应用程序注册时,如何解决“此租户的主机名无效”错误? - Stack Overflow 由我

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.