我们有一个单一的 .net Core MVC 网站应用程序,将被多个客户使用。每个客户都会有多个用户。
我们打算使用 AWS Cognito 进行用户身份验证,阅读相关文档后,我发现每个客户一个用户池是推荐的方式之一。对于我们的用例来说,这很适合,因为客户A可能想要一个用户名为“Bob”的用户,而客户B可能想要另一个用户名为“Bob”的用户。
我所读的所有内容都表明这应该是可能的,但问题在于:
在 .net core 中,我必须在启动时指定一些特定于特定应用程序池的详细信息。
我们打算使用 AWS Cognito 进行用户身份验证,阅读相关文档后,我发现每个客户一个用户池是推荐的方式之一。对于我们的用例来说,这很适合,因为客户A可能想要一个用户名为“Bob”的用户,而客户B可能想要另一个用户名为“Bob”的用户。
我所读的所有内容都表明这应该是可能的,但问题在于:
在 .net core 中,我必须在启动时指定一些特定于特定应用程序池的详细信息。
.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以供会话使用。