在新租户的 OwinStartup 之后添加 Owin 管道中间件
Add Owin Pipeline Middleware after OwinStartup for new Tenant
我有一个多租户应用程序,每个租户都可以为 WsFed 或 OpenIdConnect 定义自己的 ClientID、权限等。所有租户都在 OwinStartup 中注册如下:
public void Configuration(IAppBuilder app)
{
List<WsFederationAuthenticationOptions> WsFedTenantOptions = BuildWsFedTenantOptionsList();
List<OpenIdConnectAuthenticationOptions> OpenIdConnectTenantOptions = BuildOpenIdConnectTenantOptionsList();
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions() { CookieSecure = CookieSecureOption.Never });
foreach (var WsFedTenantOption in WsFedTenantOptions)
app.UseWsFederationAuthentication(WsFedTenantOption);
foreach (var OpenIdConnectTenantOption in OpenIdConnectTenantOptions)
app.UseOpenIdConnectAuthentication(OpenIdConnectTenantOption);
...
}
通过context.Authentication.Challenge(AuthenticationType)
切换使用哪个STS。这真的很好用。
问题是,当新租户注册时,我如何在没有应用程序池回收的情况下访问 IAppBuilder
并添加新的 AuthenticationOptions
?
启动后IAppBuilder不存在,用于构建请求执行管道,然后丢弃。管道未设计为在启动后进行修改。
我有一个多租户应用程序,每个租户都可以为 WsFed 或 OpenIdConnect 定义自己的 ClientID、权限等。所有租户都在 OwinStartup 中注册如下:
public void Configuration(IAppBuilder app)
{
List<WsFederationAuthenticationOptions> WsFedTenantOptions = BuildWsFedTenantOptionsList();
List<OpenIdConnectAuthenticationOptions> OpenIdConnectTenantOptions = BuildOpenIdConnectTenantOptionsList();
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions() { CookieSecure = CookieSecureOption.Never });
foreach (var WsFedTenantOption in WsFedTenantOptions)
app.UseWsFederationAuthentication(WsFedTenantOption);
foreach (var OpenIdConnectTenantOption in OpenIdConnectTenantOptions)
app.UseOpenIdConnectAuthentication(OpenIdConnectTenantOption);
...
}
通过context.Authentication.Challenge(AuthenticationType)
切换使用哪个STS。这真的很好用。
问题是,当新租户注册时,我如何在没有应用程序池回收的情况下访问 IAppBuilder
并添加新的 AuthenticationOptions
?
启动后IAppBuilder不存在,用于构建请求执行管道,然后丢弃。管道未设计为在启动后进行修改。