在应用程序之间共享登录cookie ASP.NET核心

时间:2016-04-02 09:38:12

标签: authentication cookies asp.net-core

使用asp.net核心应用程序共享登录cookie的正确方法是什么?

我有一个应用程序在多个子域后面运行,即:

  • site1.mydomain.com
  • site2.mydomain.com

我无法在两者之间保持身份验证。

我使用以下方式配置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。

在认证过程中,烹饪域被忽略了。

任何指针都会感激不尽。

1 个答案:

答案 0 :(得分:1)

您可能需要查看Identity Server以处理此类情况。

https://github.com/IdentityServer/IdentityServer4

这是一个基于oidc和oauth2的单点登录框架。您可以在其中一个现有站点中托管它,也可以创建第三个站点作为其他站点的身份验证服务。