电子邮件地址域是否始终是Microsoft Graph中的租户域?

时间:2019-08-29 10:52:59

标签: c# microsoft-graph microsoft-graph-sdks

我正在为使用Microsoft Graph .NET SDK的管理员开发桌面软件。

该软件使用电子邮件地址和密码进行身份验证。

使用Microsoft Graph SDK时,需要TenantID或名称。这似乎是contoso.onmicrosoft.com域名,该域名出现在用于登录Office 365的用户的电子邮件地址上。

这总是这个域吗?在某些情况下,登录电子邮件域不是租户名称吗?一个电子邮件地址是否可以与多个租户关联?如果是,该如何检查?

1 个答案:

答案 0 :(得分:0)

仅当“应用程序注册”设置为仅适用于单个租户时,或者使用的OAuth流需要该租户时,才需要提供租户。对于桌面应用程序,您可以使用“交互流”,并且不需要租户。您可以像这样设置它,

IPublicClientApplication publicClientApplication = PublicClientApplicationBuilder
            .Create(clientId)
            .Build();

InteractiveAuthenticationProvider authProvider = new InteractiveAuthenticationProvider(publicClientApplication, scopes);

https://docs.microsoft.com/en-us/graph/sdks/choose-authentication-providers?tabs=CS#interactive-provider

这种方法使用所谓的“公共”授权端点,它将根据用户的电子邮件地址确定该用户是哪个租户。

租户标识符可以是{something} .onmicrosoft.com,也可以是相应的GUID。组织可以将自定义域与O365租户关联,这些域通常也将映射到正确的租户。如果您在此处拨打电话:

https://login.windows.net/{someTenantName}/v2.0/.well-known/openid-configuration 

您将返回包含authorization_endpoint的响应,该响应包含租户的GUID版本。如有必要,这是您自己进行转换的一种方法。