ASP.NET标识cookie和子域

时间:2015-03-28 14:21:08

标签: authentication cookies subdomain asp.net-identity

我正在尝试跨子域共享我的ASP.NET身份Cookie。目前只在当地。

  • sub1.domain.local
  • sub2.domain.local

我在两个站点上都有相同的机器密钥,但是在sub1上创建的cookie不在sub2上验证,反之亦然。生成的cookie域总是“.domain.local”(应该是正确的??)

这是我在Startup类中的设置:

app.UseCookieAuthentication(new CookieAuthenticationOptions
        {
            AuthenticationType = DefaultAuthenticationTypes.ApplicationCookie,
            LoginPath = new PathString("/login"),
            CookieDomain = ".domain.local",
        });

我为每个网站尝试过localhost:siteport,但结果相同(cookie域为空,解析为“localhost”)

我不能为我的生活弄清楚我做错了什么。也许有人可以指出我正确的方向?感谢

更新

好的,所以我发现cookie实际上是在子域之间共享的,但它只在创建cookie的子域上被认为是有效的。需要找到一种方法来了解其他站点上的身份验证失败的原因..

2 个答案:

答案 0 :(得分:0)

经过大量的讨论后,我注意到各种Identity包中的版本号不同。我更新了Nuget的各种套餐,你不知道。有效!

让我担心的是它只是从次要版本更新(例如Microsoft.Owin.Security.Cookies从3.0.0.0到3.0.1.0)。我不希望他们必须像以后那样保持一致......

答案 1 :(得分:0)

您需要将Cookie路径设置为./全局根文件夹。这样,cookie将可用于根目录下的所有站点。