首页 > 解决方案 > Azure AD 租户 ID

问题描述

摘要: 如何动态获取 Microsoft 用户的租户 ID?

详细信息:我正在编写一个多租户应用程序(C# 和 .NET Core),我想使用它来创建订阅并注册更改通知。我正在使用 Microsoft Graph API v1.0 进行此操作。

我按照文档获取服务帐户的访问令牌。注册应用程序并创建所需权限(例如,User.Read、Mail.ReadWrite)后,我们需要为它们授予管理员同意

要以编程方式执行此操作,

  1. 发送 GET 请求至:https://login.microsoftonline.com/common/adminconsent?client_id={anyClientId}&state=12345&redirect_uri={redirectUrl}

  2. 这会将用户带到身份验证同意屏幕,询问请求的权限。

  3. 一旦授予,用户将从步骤 1 重定向到“redirectUrl”,并且tenantId 和 admin_consent 将出现在查询参数中,例如,https://example.com/auth?admin_consent=true&tenant={corresponding_tenant_id}

然后可以使用此 tenantId 为 C# MVC 应用程序获取经过身份验证的 GraphClient。MSGraph SDK for .NET 参考

问题

有没有其他方法可以再次获取此tenantId 以供将来使用?我希望每次发出请求(登录除外)时都可以避免管理员同意流程。

再次需要租户 ID 的示例用例:

标签: c#azureazure-active-directorymulti-tenant

解决方案


  1. 大多数情况下,您可以使用租户名称来替换租户 ID。并且,您可以从电子邮件地址中获取租户名称。

  2. 根据您的描述,您的应用程序将代表用户管理用户的邮箱。在这种情况下,您的应用程序将拥有用户的访问令牌。然后,您可以通过使用令牌向https://management.azure.com/tenants?api-version=2016-06-01发出 GET 请求来获取租户 ID 。


推荐阅读