【发布时间】:2019-06-21 17:01:27
【问题描述】:
我们有一个可供多个客户使用的 .net Core MVC Web 应用程序。每个客户将有多个用户。
我们打算使用 AWS Cognito 进行用户身份验证并阅读此内容,我发现每个客户的用户池是推荐的路线之一。这适用于我们的用例,因为客户 A 可能想要一个用户名为“Bob”的用户,而客户 B 可能想要另一个用户名为“Bob”的用户。
我读过的所有内容都表明这应该是可能的,但问题是:
在 .net 核心中,我必须在启动时指定特定于特定应用程序池的一些详细信息:
.AddOpenIdConnect(async options =>
{
options.ResponseType = OpenIdConnectResponseType.Code;
options.ConfigurationManager = new ConfigurationManager<OpenIdConnectConfiguration>(
services.BuildServiceProvider().GetService<IOpenIdDiscovery>().OpenIdConfigurationUrl(),
new OpenIdConnectConfigurationRetriever(),
services.BuildServiceProvider().GetService<System.Net.Http.HttpClient>());
options.Authority = Configuration["OpenIdAuthority"];
options.ClientId = Configuration["AuthCodeClientId"];
options.ClientSecret = Configuration["AuthCodeClientSecret"];
如何让应用程序使用多用户池?
为了详细说明上述内容,我认为理想的解决方案是:
1) 我们将用户引导至其用户池的特定登录 URL。 2)登录后用户被重定向到中心站点。 3) 我们以某种方式检测他们通过哪个用户池进行身份验证,并为会话相应地设置 ClientId 和 ClientSecret。
【问题讨论】:
标签: amazon-web-services asp.net-core amazon-cognito multi-tenant