OWIN OpenIdConnect Единый вход с Office 365

Мне удалось выполнить единый вход через 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.


person cuongle    schedule 26.06.2015    source источник


Ответы (2)


В репозитории OfficeDev на GitHub есть образец проекта. который проходит через этот сценарий. Вот ссылка на сообщение в блоге который описывает проект.

person Rich Ross    schedule 27.06.2015
comment
Спасибо за ссылку, мой подход также работает аналогично, вы знаете, как я могу получить идентификатор клиента Office 365? - person cuongle; 27.06.2015

Клиент Office 365 и клиент Azure Active Directory - это одно и то же. Когда клиенты регистрируются в Office 365, они получают клиент Azure Active Directory, и именно здесь хранятся все их удостоверения и т. Д. У разных клиентов AAD (включая клиентов, изначально созданных с помощью Office 365) будут разные идентификаторы клиентов.

Как получить идентификатор арендатора в первую очередь зависит от вашего приложения. Один из подходов - разрешить любому клиенту дать согласие / подключиться к вашему приложению, и вы получите их идентификатор клиента из токена авторизованного пользователя.

person Philippe Signoret    schedule 28.06.2015
comment
Спасибо за ответ, и да, я могу получить идентификатор клиента Office 365 из токена в коде. Дело в том, что в нашем приложении есть текстовое поле, позволяющее администратору клиента вводить свой идентификатор клиента Office 365. Мы основывались на этом идентификаторе клиента, чтобы определить, исходит ли пользователь от нашего доверенного клиента. Мы не разрешаем всем пользователям Azure доступ к нашему приложению, а только тем пользователям, которые принадлежат к клиенту, настроенному в нашем приложении. Подумайте, как ИТ-администратор наших клиентов может получить идентификатор клиента Office 365. Что-то вроде этого ответа stackoverflow.com/questions/26384034/ - person cuongle; 28.06.2015