使用Identity Server支持不同租户的不同身份验证

时间:2018-04-20 09:18:14

标签: authentication multi-tenant identityserver4

我正在使用IdentityServer4和ASP.NET Core 2.我正在使用Saaskit Multitenant进行多租户。 随着Core2最近的更改,Configure():UseXYZAuthentication已被ConfigureService()取代:AddXYZ。

ConfigureService只运行一次,而不是每个租户运行一次。因此,所有租户都需要支持相同的身份验证。比如Cookie和Google。 (我们可以通过使用IConfigureNamedOptions接口实现类来为每个租户配置单独的身份验证。

但是我该怎么做才能让一个租户使用Google身份验证而另一个租户使用Microsoft身份验证?我需要为每个租户注册身份验证中间件。 在ASP.net Core 1中,我们可以在UsePerTenant方法中注册身份验证。这与Asp.net Core 2不同。

期待一些帮助!

1 个答案:

答案 0 :(得分:0)

您可以完全控制最终用户的登录流程,这样一旦您知道他们是哪个租户,您就可以调用任何您喜欢的方案。您目前如何解决租户问题?

(非常简化的)伪造的MVC代码可能类似于:

var tenantConfig = resolveTenantConfig(Request); 
return Challenge(tenantConfig.Scheme);

长话短说,你没有连接到中间件是自动的,如果你愿意,可以在MVC框架内编写你自己的决策逻辑。