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

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

我在 Azure AD 中注册了一个具有站点权限的多租户应用程序。选择使用 Microsoft Graph API 读取/写入 SharePoint 站点。租户 B 已通过生成的管理员同意链接成功授予管理员同意,从而在租户 B 中生成企业应用程序。但是,虽然我可以使用应用程序注册访问租户 A 中的站点,但在以下情况下我收到“此租户的主机名无效”错误:尝试访问租户 B 中的站点。

如何解决此问题以使用 Microsoft Graph API 访问租户 B 中的站点?

任何帮助或指导将不胜感激。谢谢你。

我尝试使用租户 B 的站点调用“/sites/{hostName}:{serverRelativePath}”microsoft graph 端点,导致此错误:

{"error":{"code":"invalidRequest","message":"Invalid hostname for this tenancy","innerError":{"date":"2024-07-04T08:03:02","request-id":"22ceb0ec-b377-4086-91ec-610ed637413f","client-request-id":"22ceb0ec-b377-4086-91ec-610ed637413f"}}}

sharepoint azure-active-directory microsoft-graph-api multi-tenant microsoft-graph-sites
1个回答
0
投票

TenantA

 中创建
多租户 Microsoft Entra ID 应用程序,并授予 Microsoft Graph
Sites.Selected
API 权限:

enter image description here

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

New-AzADServicePrincipal -ApplicationId <AppIDOfTenantAApp>

enter image description here

获得管理员同意后,权限被授予

TenantB
企业应用程序:

enter image description here

当您使用客户端凭据流程时,您必须设置具有租户权限的仅限应用程序的主体:

  • Sites.Selected
    API 权限仅允许访问所选站点。
  • 因此,您需要授予访问应用程序对您要访问的网站的访问权限。

导航至

https://TenantBDomain.sharepoint.com/sites/SiteName/_layouts/15/appinv.aspx
并使用
TenantB
用户登录。传递
TenantAAppID
并使用 XML 请求授予访问权限:

<AppPermissionRequests AllowAppOnlyPolicy="true">
    <AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl" />
</AppPermissionRequests>

enter image description here

单击创建并信任它:

enter image description here

生成访问令牌:

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

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

enter image description here

现在,我能够使用 TenantA Microsoft Entra ID 应用程序成功访问

TenantB
站点:

GET https://graph.microsoft.com/v1.0/sites/TenantBDomain.sharepoint.com:/sites/SiteName:/

enter image description here

如果问题仍然存在,请确保将站点 ID 而不是站点名称传递给您要传递的 API 调用。

如果您不想在加载项中授予权限以允许对应用程序的完全访问,请参阅我的此SO 线程

© www.soinside.com 2019 - 2024. All rights reserved.