Можно ли подключить внешнюю аутентификацию после запуска приложения?

Как и сейчас, мы добавляем внешнюю аутентификацию в ConfigureServices с чем-то вроде

services.AddAuthentication(options =>
    {
        options.DefaultScheme = "Cookies";
        options.DefaultChallengeScheme = "oidc";
    })
    .AddCookie("Cookies")
    .AddOpenIdConnect(...

Во время запуска я извлекаю все конфигурации федерации (как Oidc, так и WsFed) и подключаю их в ConfigureServices.

Но представьте сценарий с несколькими арендаторами, в котором новые конфигурации федерации добавляются по мере добавления новых клиентов. Единственное известное мне решение — перезапустить приложение, чтобы сервисы ConfigureServices могли снова запускаться, извлекать записи для необходимых интеграций и добавлять вызовы для каждой из них. Было бы действительно полезно иметь возможность обойтись без перезапуска. Любые идеи приветствуются.


person danijels    schedule 25.09.2020    source источник


Ответы (2)


Вы можете иметь несколько AddOpenIdConnect в приложении, самое главное, что вам нужно сделать, это убедиться, что эти URL-адреса различны для каждого из них:

  CallbackPath = new PathString("/signin-oidc");
  SignedOutCallbackPath = new PathString("/signout-callback-oidc");
  RemoteSignOutPath = new PathString("/signout-oidc");

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

person Tore Nestenius    schedule 25.09.2020
comment
Да, возможно, я был неясен - я полностью осознаю тот факт, что федераций может быть несколько, и у нас уже есть куча Oidc и Wsfed. Я хочу получить информацию о динамическом добавлении. - person danijels; 25.09.2020

Да, вы можете добавлять схемы динамически, вот пример https://github.com/aspnet/AuthSamples/tree/master/samples/DynamicSchemes старый код, но все еще точный. Обязательно выполните postconfigure шагов, это объясняется здесь. Вот еще один хороший ответ по этому поводу.

person nahidf    schedule 26.09.2020