Мне удалось выполнить единый вход через Azure Active Directory с промежуточным программным обеспечением OpenIdConnect:
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
AuthenticationMode = AuthenticationMode.Passive,
ClientId = "{guid}",
Authority = "https://login.microsoftonline.com/common/",
TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = false
}
});
Мы используем мультитенантное приложение в Azure и на основе tenantid
возвращенного токена проверяем, разрешен ли этот пользователь (проверьте tenantid
в нашей базе данных, исходит ли он от наших доверенных клиентов).
Он отлично работает, если клиент хочет использовать единый вход с нашим приложением. Им необходимо синхронизировать своих пользователей с активным каталогом Azure и настроить их tenantid
в нашем приложении.
Дело в том, что предположим, что у некоторых клиентов действительно есть Office 365. Они уже синхронизируют учетные записи пользователей своей компании с Office 365, и они хотели бы воспользоваться учетными записями пользователей в Office 365 и использовать единый вход с этим.
Я знаю, что Office 365 построен на базе Azure, и я могу настроить, чтобы наше приложение работало с учетными записями пользователей нашей компании, получив Office 365 tenantid
(как я получил от отладки кода):
Но в одном я не уверен, что Office 365 tenantid
будет отличаться для разных компаний, например: и компания A, и компания B используют Office 365, поэтому офис 365 tenantid
отличается для компании A и компании B?
Если да, то как получить tenantid
из Office 365 (не отладка, как я).
Также сообщите, если этот способ не работает с единым входом в Office 365.