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

如何借助MS Graph根据多租户应用的Client ID获取主租户ID?

通过应用Client ID定位多租户应用主租户的方法

当你在自身租户中使用的多租户应用因客户端密钥过期停摆,需要联系应用所有者时,可以通过以下方法获取其主租户ID或域名:

一、手动查询(无需代码)

  • 利用Azure门户:
    1. 登录你的Azure租户,进入「企业应用」>「所有应用」
    2. 搜索目标应用的Client ID,找到对应的服务主体条目
    3. 进入详情页后,查看「所有者」列表——若所有者是外部租户用户,其UPN格式(如user@contoso.com)中的域名就是主租户域名
    4. 也可以用Azure CLI快速获取主租户ID:
      az ad sp show --id <你的应用ClientID> --query "appOwnerOrganizationId"
      

二、Microsoft Graph 查询方案

必要权限

需要拥有 Directory.Read.All 或 Application.Read.All 权限(委派权限或应用权限均可,根据你的认证方式选择)

具体操作

1. 获取主租户ID

发送GET请求:

GET https://graph.microsoft.com/v1.0/servicePrincipals/<ClientID>?$select=appOwnerOrganizationId,displayName

响应中的 appOwnerOrganizationId 字段就是该多租户应用注册所在的主租户ID。

2. 通过主租户ID获取默认域名

拿到主租户ID后,发送GET请求:

GET https://graph.microsoft.com/v1.0/organization/<主租户ID>?$select=verifiedDomains

在返回的 verifiedDomains 数组里,找到 isDefault: true 的条目,其 name 字段就是主租户的默认域名。

PowerShell 示例(使用Graph模块)

# 连接Graph并授权
Connect-MgGraph -Scopes "Directory.Read.All"

# 查询服务主体的主租户ID
$servicePrincipal = Get-MgServicePrincipal -ServicePrincipalId "<ClientID>" -Property appOwnerOrganizationId
$mainTenantId = $servicePrincipal.AppOwnerOrganizationId

# 查询主租户默认域名
$tenantInfo = Get-MgOrganization -OrganizationId $mainTenantId -Property verifiedDomains
$defaultDomain = ($tenantInfo.VerifiedDomains | Where-Object { $_.IsDefault }).Name

# 输出结果
Write-Host "主租户ID: $mainTenantId"
Write-Host "主租户默认域名: $defaultDomain"

三、补充说明

  • 如果 appOwnerOrganizationId 返回空值,可查看服务主体的 publisherName 字段,通常会包含主租户的名称或域名线索
  • 若无法直接获取所有者信息,对于微软发布的应用可联系微软支持,第三方应用则可通过域名尝试查找租户管理员联系方式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 16:12:49