我正在使用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不同。
期待一些帮助!
答案 0 :(得分:0)
您可以完全控制最终用户的登录流程,这样一旦您知道他们是哪个租户,您就可以调用任何您喜欢的方案。您目前如何解决租户问题?
(非常简化的)伪造的MVC代码可能类似于:
var tenantConfig = resolveTenantConfig(Request);
return Challenge(tenantConfig.Scheme);
长话短说,你没有将连接到中间件是自动的,如果你愿意,可以在MVC框架内编写你自己的决策逻辑。