Зарегистрируйте схемы аутентификации на основе клиента в asp. net core 3.1. - PullRequest
12 голосов
/ 20 января 2020

В настоящее время я создал веб-приложение Identity server 4 с внешними провайдерами входа в систему с идентификатором и секретными данными клиента по умолчанию. Но моя цель - зарегистрировать провайдеров аутентификации, таких как Azure, Google, Facebook на основе арендатора.

Я использовал SaasKit многопользовательскую сборку, здесь я попробовал приложение .usepertenant () промежуточное ПО. Но UseGoogleAuthentication () метод устарел, поэтому я не смог добиться многопользовательской аутентификации с использованием этого промежуточного программного обеспечения usepertenant.

Текущий код,

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);
 });

Ответы [ 3 ]

3 голосов
/ 17 марта 2020

См. Официальные документы MS, Поставщики аутентификации на каждого арендатора

ASP. NET Базовая структура не имеет встроенного решения для мультитенантной аутентификации. Несмотря на то, что клиенты, конечно, могут написать его, используя встроенные функции, мы рекомендуем клиентам изучить для этого Orchard Core .

0 голосов
/ 05 февраля 2020

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

0 голосов
/ 29 января 2020

Поскольку при регистрации DI необходимо настроить аутентификацию, вам нужно будет настроить всех внешних провайдеров входа в систему в целом при регистрации аутентификации.

На этом шаге необходимо добавить все схемы. Схема имеет фиксированный идентификатор клиента / секретный ключ, поэтому вам необходимо bootstrap ваш IdentityServer со всеми учетными данными внешнего провайдера входа, которые вы поддерживаете для всех ваших клиентов. Имя схемы должно быть уникальным.

Например, у арендатора A может быть схема "A_microsoft", у арендатора B может быть схема "B_microsoft", et c.

. Затем можно ссылаться на эти схемы аутентификации при вызове методов в IdentityServer. SignIn, Challenge, SignOut и др. c.

Имейте в виду, что для этого потребуется загрузить IdentityServer с полным набором арендаторов. В зависимости от вашего сценария, если арендаторы регулярно обновляются, потребуется также регулярный перезапуск IdentityServer, чтобы узнать о новых схемах аутентификации.


Если это проблема, вы, вероятно, можете каким-то образом увеличить зарегистрированную схемы аутентификации во время выполнения IdentityServer, но это будет непросто. Это может потребовать более крупных пользовательских реализаций промежуточного программного обеспечения для аутентификации, поставляемого с AspNetCore.

...