Azure AD租户ID

时间:2019-07-10 08:22:12

标签: c# azure azure-active-directory multi-tenant

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

详细信息: 我正在编写一个多租户应用程序(C#和.NET Core),我想使用该应用程序创建订阅和register for change notifications。我正在使用Microsoft Graph API v1.0进行此操作。

我遵循了this文档,以获取服务帐户的访问令牌。 在注册该应用并创建所需的权限(例如User.Read,Mail.ReadWrite)后,我们需要为其授予管理员同意

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

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

  2.   
  3. 这将带用户进入auth同意屏幕,询问所请求的权限。

  4.   
  5. 获得许可后,用户将从步骤1重定向到“ redirectUrl”,并且tenantId和admin_consent将出现在查询参数中,例如https://example.com/auth?admin_consent=true&tenant={corresponding_tenant_id}

  6.   

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

问题

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

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

  • 创建GraphClient以在接收邮箱上的更改通知时获取特定消息。

1 个答案:

答案 0 :(得分:0)

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

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