应用程序启动后是否可以连接外部身份验证?

问题描述

现在,我们以类似的方式在ConfigureServices中添加外部身份验证

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

在启动过程中,我检索了所有联合身份验证配置(Oidc和WsFed),并将其连接到ConfigureServices中。

但是,请设想一个多租户方案,其中在添加新客户端时添加新的联合身份验证配置。我知道的唯一解决方案是回收应用程序,以便ConfigureServices可以再次运行,检索所需集成的条目并为每个集成添加调用。如果没有重新启动要求,这样做真的很有用。任何想法都欢迎。

解决方法

一个应用程序中可以有多个AddOpenIdConnect,最重要的事情是确保每个URL的这些URL都不同:

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

但是我不知道您是否可以在运行时动态添加/删除处理程序。

,

是的,您可以动态添加架构,这是一个示例https://github.com/aspnet/AuthSamples/tree/master/samples/DynamicSchemes 它的旧代码,但仍然准确。确保还执行postconfigure步骤,其步骤已说明hereHere是与此相关的另一个很好的答案。