Зареєструйте схеми аутентифікації на основі орендаря в ядрі asp.net 3.1


12

Наразі я створив веб-додаток для сервера Identity 4 із зовнішніми постачальниками входу з ідентифікатором клієнта та секретами за замовчуванням. Але моя мета - зареєструвати постачальників аутентифікації, таких як Azure, Google, Facebook на базі орендаря.

Я використовував SaasKit багатосторонню збірку, тут я спробував програмне забезпечення app.usepertenant () . Але метод UseGoogleAuthentication () застарілий, тому я не зміг досягти багатокористувацької автентифікації за допомогою цього програмного забезпечення середнього користування.

Поточний код,

services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
   .AddMicrosoftAccount(option =>
     {
        option.ClientId = "clientid";
        option.ClientSecret = "clientsecret";
        option.SaveTokens = true;
     });

Очікуваний код, як показано нижче,

var authentication = services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme);

if (tenant.hasMicrosoft)
{
   authentication.AddMicrosoftAccount(option =>
   {
        option.ClientId = "clientid";
        option.ClientSecret = "clientsecret";
        option.SaveTokens = true;
   });
}

if (tenant.hasGoogle)
{
   authentication.AddGoogle(option =>
   {
        option.ClientId = "clientid";
        option.ClientSecret = "clientsecret";
        option.SaveTokens = true;
   });
}

authentication.AddCookie( options =>
 {
    options.SlidingExpiration = true;
    options.ExpireTimeSpan = new TimeSpan(7, 0, 0, 0);
 });


Можливо, ви знайдете відповідь або вирішення у цій темі .
Руард ван Ельбург

@RuardvanElburg дякуємо за вашу відповідь, з запропонованої теми ми можемо оновити вже зареєстровані варіанти схем на основі орендаря під час запуску заявки. Після того як ми не зможемо їх оновити.
Madhan kumar D

Ви хочете мати різні налаштування ClientId / ClientSecret на орендаря? Або ви хочете лише додати різні схеми на основі орендаря?
Кірк Ларкін

@KirkLarkin різні схеми з відповідним клієнтом-таємницею орендаря. Як і нижче, якщо (tenant.hasMicrosoft) {authentication.AddMicrosoftAccount (option => {option.ClientId = "clientid"; option.ClientSecret = "clientsecret"; option.SaveTokens = true;}); }
Мадхан Кумар D

Будь-яке оновлення щодо цього?
Madhan kumar D

Відповіді:


3

Дивіться офіційні документи MS, провайдери аутентифікації на орендаря

Основа ASP.NET Core не має вбудованого рішення для аутентифікації з кількома орендарями. Незважаючи на те, що клієнти, безумовно, можуть написати одне, використовуючи вбудовані функції, ми радимо клієнтам заглянути для Orchard Core для цієї мети.


0

Оскільки аутентифікацію потрібно налаштувати під час реєстрації DI, вам доведеться налаштувати всіх зовнішніх постачальників входу під час реєстрації автентифікації.

Під час цього кроку потрібно додати всі схеми. Схема має фіксований ідентифікатор клієнта / секрет, тому вам потрібно завантажувати свій IdentityServer за допомогою всіх зовнішніх облікових даних провайдера входу, які ви підтримуєте для всіх своїх клієнтів. Назва схеми повинна бути унікальною.

Наприклад, орендар А може мати схему "A_microsoft", орендар B може мати схему "B_microsoft" тощо.

Потім ви можете звернутися до цих схем аутентифікації, коли викликаєте методи в IdentityServer. SignIn, Challenge, SignOut тощо

Будьте в курсі, що для цього буде потрібен завантажувач IdentityServer повного набору орендарів. Залежно від вашого сценарію, якщо орендарі регулярно оновлюються, він також вимагатиме регулярних перезавантажень IdentityServer, щоб бути в курсі нових схем аутентифікації.


Якщо це проблема, ви, певно, можете якось збільшити зареєстровані схеми аутентифікації під час виконання IdentityServer, але це буде непросто. Можливо, знадобляться більші спеціальні реалізації середнього програмного забезпечення для аутентифікації, що постачається разом з AspNetCore.


0

Ви маєте на увазі, що хочете додати підтримку декількох постачальників автентифікацій? У цьому документі вже вказано, як додати декілька постачальників авторизації в сервісі налаштування. Більше не потрібно використовувати app.UseXXXдля налаштування трубопроводу самостійно

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.