我正在为使用Microsoft Graph .NET SDK的管理员开发桌面软件。
该软件使用电子邮件地址和密码进行身份验证。
使用Microsoft Graph SDK时,需要TenantID或名称。这似乎是contoso.onmicrosoft.com域名,该域名出现在用于登录Office 365的用户的电子邮件地址上。
这总是这个域吗?在某些情况下,登录电子邮件域不是租户名称吗?一个电子邮件地址是否可以与多个租户关联?如果是,该如何检查?
答案 0 :(得分:0)
仅当“应用程序注册”设置为仅适用于单个租户时,或者使用的OAuth流需要该租户时,才需要提供租户。对于桌面应用程序,您可以使用“交互流”,并且不需要租户。您可以像这样设置它,
IPublicClientApplication publicClientApplication = PublicClientApplicationBuilder
.Create(clientId)
.Build();
InteractiveAuthenticationProvider authProvider = new InteractiveAuthenticationProvider(publicClientApplication, scopes);
这种方法使用所谓的“公共”授权端点,它将根据用户的电子邮件地址确定该用户是哪个租户。
租户标识符可以是{something} .onmicrosoft.com,也可以是相应的GUID。组织可以将自定义域与O365租户关联,这些域通常也将映射到正确的租户。如果您在此处拨打电话:
https://login.windows.net/{someTenantName}/v2.0/.well-known/openid-configuration
您将返回包含authorization_endpoint
的响应,该响应包含租户的GUID版本。如有必要,这是您自己进行转换的一种方法。