OWIN OpenIdConnect Single Sign On с 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 ще бъде различен между компаниите, нали, например: и компания А, и компания Б използват Office 365, така че офис 365 tenantid е различен между компания А и компания Б?

Ако да, как да получите tenantid от Office 365 (без отстраняване на грешки, както направих аз).

Също така, моля, уведомете дали този начин не работи с Office 365 Single Sign On.


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


Отговори (2)


Има примерен проект в хранилището на OfficeDev в GitHub който преминава през този сценарий. Ето връзка към публикацията в блог който описва проекта.

person Rich Ross    schedule 27.06.2015
comment
Благодаря за връзката, моят подход също работи по подобен начин, знаете ли как мога да получа Office 365 Tenant ID? - person cuongle; 27.06.2015

Клиент на Office 365 и клиент на Azure Active Directory са абсолютно едно и също нещо. Когато клиентите се регистрират за Office 365, те получават клиент на Azure Active Directory и това е мястото, където се съхраняват всичките им самоличности и т.н. Различните наематели на AAD (включително наематели, първоначално създадени чрез Office 365) ще имат различни идентификатори на наематели.

Как да получите ID на наемателя на първо място наистина зависи от вашето приложение. Един подход е да позволите на всеки наемател да даде съгласие/свърже се с вашето приложение и вие да извлечете неговия идентификатор на наемател от токена на вписания потребител.

person Philippe Signoret    schedule 28.06.2015
comment
Благодаря ви за отговора и да, мога да получа идентификационния номер на наемателя на Office 365 от токена в кода. Работата е там, че нашето приложение има текстово поле, което позволява на администратора на клиента да въведе своя идентификатор на наемател на Office 365. Базираме се на този идентификатор на наемател, за да определим дали потребителят идва от нашия доверен наемател. Ние не позволяваме на всички потребители на Azure да имат достъп до нашето приложение, а само на потребителите, които принадлежат на клиент, конфигуриран в нашето приложение. Помислете как ИТ администраторът от нашите клиенти може да получи идентификатор на клиента на Office 365. Нещо като този отговор stackoverflow.com/questions/26384034/ - person cuongle; 28.06.2015