使用asp.net核心应用程序共享登录cookie的正确方法是什么?
我有一个应用程序在多个子域后面运行,即:
我无法在两者之间保持身份验证。
我使用以下方式配置startup.cs,这允许我通过谷歌进行身份验证:
app.UseIdentity();
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AutomaticAuthenticate = true,
AutomaticChallenge = true,
LoginPath = new PathString("/account/login"),
AuthenticationScheme = CookieAuthenticationDefaults.AuthenticationScheme,
CookieDomain = ".mydomain.com",
CookieName = "AuthenticationCookie"
});
app.UseGoogleAuthentication(options =>
{
options.ClientId = "xxx";
options.ClientSecret = "xxx";
});
我也相信我正确设置了数据保护服务,因为我目前在多个docker容器中运行该站点,并且应用程序可以成功地进行负载均衡。
让我感到困惑的是,当我检查身份验证过程设置的Cookie时,它始终将site1.mydomain.com记录在身份验证Cookie中,而不是.mydomain。
在认证过程中,烹饪域被忽略了。
任何指针都会感激不尽。
答案 0 :(得分:1)
您可能需要查看Identity Server以处理此类情况。
https://github.com/IdentityServer/IdentityServer4
这是一个基于oidc和oauth2的单点登录框架。您可以在其中一个现有站点中托管它,也可以创建第三个站点作为其他站点的身份验证服务。