目前,我已经创建了一个身份服务器4 web应用程序与默认客户端id和秘密的外部登录提供者。但我的目标是注册认证提供商,如Azure,Google,Facebook,基于租户。
我已经使用了SaasKit多租户程序集,这里我尝试过中间件.但是UseGoogleAuthentication()方法已经过时,所以我无法使用这个usepertenant中间件来实现多租户身份验证。
目前的代码,
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddMicrosoftAccount(option =>
{
option.ClientId = "clientid";
option.ClientSecret = "clientsecret";
option.SaveTokens = true;
});预期的代码如下,
var authentication = services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme);
if (tenant.hasMicrosoft)
{
authentication.AddMicrosoftAccount(option =>
{
option.ClientId = "clientid";
option.ClientSecret = "clientsecret";
option.SaveTokens = true;
});
}
if (tenant.hasGoogle)
{
authentication.AddGoogle(option =>
{
option.ClientId = "clientid";
option.ClientSecret = "clientsecret";
option.SaveTokens = true;
});
}
authentication.AddCookie( options =>
{
options.SlidingExpiration = true;
options.ExpireTimeSpan = new TimeSpan(7, 0, 0, 0);
});发布于 2020-03-17 04:43:08
见正式的MS文档,每个租户的身份验证提供者
ASP.NET核心框架没有用于多租户身份验证的内置解决方案。虽然客户当然可以使用内置特性编写果园核,但我们建议客户为此目的查看。
发布于 2020-01-29 10:41:14
由于身份验证需要在DI注册期间进行配置,所以在身份验证注册期间,通常必须设置所有外部登录提供程序。
在这一步中,您需要添加所有方案。一个方案有一个固定的客户端id/机密,因此您需要使用所有外部登录提供程序凭据引导您的IdentityServer,从而为所有客户端提供支持。方案名称必须是唯一的。
例如,租户A可能有一个方案"A_microsoft",租户B可能有一个方案"B_microsoft",等等。
然后,您可以在IdentityServer中调用方法时引用这些身份验证方案。SignIn,挑战,SignOut等。
请注意,这将需要引导IdentityServer --一组完整的租户。根据您的场景,如果租户定期更新,则还需要定期重新启动IdentityServer,以了解新的身份验证方案。
如果这是一个问题,您可能可以在IdentityServer运行时以某种方式增强已注册的身份验证方案,但这并不容易。它可能需要AspNetCore附带的身份验证中间件的更大的自定义实现。
发布于 2020-02-05 09:21:00
您的意思是要添加对多个身份验证提供程序的支持吗?本文件已经指定了如何在配置服务中添加多个auth提供程序。不再需要使用app.UseXXX来自己配置管道
https://stackoverflow.com/questions/59822749
复制相似问题