【问题标题】:Is it possible to wire up external authentication after application startup?应用程序启动后是否可以连接外部身份验证?
【发布时间】:2021-01-11 20:26:15
【问题描述】:

就像现在一样,我们在 ConfigureServices 中添加外部身份验证,类似于

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

在启动期间,我检索所有联合配置(Oidc 和 WsFed)并将它们连接到 ConfigureServices。

但是想象一个多租户场景,在添加新客户端时添加新的联合配置。我知道的唯一解决方案是回收应用程序,以便 ConfigureServices 可以再次运行,检索所需集成的条目并为每个条目添加调用。如果无需重新启动要求,这将非常有用。欢迎任何想法。

【问题讨论】:

    标签: identityserver4 openid-connect ws-federation federation


    【解决方案1】:

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

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

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

    【讨论】:

    • 是的,也许我不清楚 - 我完全清楚可以有多个联盟,而且我们确实已经有一堆 Oidc 和 Wsfed。这是我想要获取信息的动态添加。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-03-08
      • 2017-03-07
      • 2020-06-19
      • 2019-09-12
      • 2019-10-21
      • 2018-12-23
      • 1970-01-01
      • 2018-02-27
      • 1970-01-01
      相关资源
      最近更新 更多