问题描述
现在,我们以类似的方式在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
步骤,其步骤已说明here。 Here是与此相关的另一个很好的答案。