You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决多租户Azure AD应用访问Microsoft Graph API的"invalid hostname for this tenancy"错误

解决"Invalid hostname for this tenancy"访问租户B SharePoint站点的问题

核心原因

该错误的本质是请求使用的访问令牌所属租户与目标SharePoint站点的租户不匹配,或是Sites.Selected权限未完成针对租户B目标站点的具体授权。

解决步骤

1. 确保获取租户B专属的访问令牌

多租户应用调用Graph API时,必须针对目标租户生成令牌:

  • 获取令牌时,将tenant参数指定为租户B的租户ID或域名(示例请求地址:https://login.microsoftonline.com/{tenantB-id}/oauth2/v2.0/token),禁止使用common或租户A的ID。
  • 解析令牌内容,确认tid字段为租户B的租户ID,aud字段为https://graph.microsoft.com,且scp或roles中包含Sites.Selected权限。

2. 完成租户B目标站点的权限授权

Sites.Selected权限需要单独对目标站点授予应用访问权限,仅租户管理员同意全局权限无法生效:

  • 使用租户B的管理员账号,调用以下Graph API为应用授权:
    POST https://graph.microsoft.com/v1.0/sites/{site-id}/permissions
    Content-Type: application/json
    
    {
      "roles": ["write"], // 根据业务需求选择read/write等权限
      "grantedToIdentities": [{
        "application": {
          "id": "你的多租户应用ID",
          "displayName": "你的应用名称"
        }
      }]
    }
    
  • 调用GET https://graph.microsoft.com/v1.0/sites/{site-id}/permissions验证,确认返回结果中存在你的应用权限条目。

3. 校验站点访问端点参数的正确性

检查/sites/{hostName}:{serverRelativePath}的参数是否符合要求:

  • hostName必须是租户B的SharePoint站点域名(例如contoso.sharepoint.com),不能使用租户A的域名。
  • serverRelativePath需以/sites/开头(例如/sites/TargetTeamSite),根站点可直接使用/。

4. 确认租户B中企业应用的状态

  • 登录租户B的Azure AD后台,找到对应的企业应用,确认Sites.Selected权限已被授予且状态为“已同意”。
  • 检查企业应用未被禁用,且权限范围覆盖所需的站点操作。

内容的提问来源于stack exchange,提问作者Selmir Aljic

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 17:44:57