如何在所有子域中保留身份验证cookie?

达斯

因此,我进行了从aspnetcore1.1到aspnetcore2.0的迁移,并尝试使用中的新身份验证设置Startup.cs

我所有的网站都共享相同的域“ .example.com”。用户使用他们的Google帐户登录,然后获得一个应用程序cookie,我要在“ .example.com”的所有子域中保留该cookie。

现在,尽管如此,当用户登录时,成功创建了一个cookie,但是该cookie却从域中的所有其他站点注销。有人可以刺这吗?

public void ConfigureServices (IServiceCollection services)
{
    // ...-snip-...

    services.ConfigureApplicationCookie(options =>
    {
        options.Cookie.Name = ".AuthCookie";
        options.Cookie.Expiration = TimeSpan.FromDays(7);
        options.LoginPath = "/Account/Login";
        options.Cookie.Domain = ".example.com";
    });

    services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
       .AddGoogle(options => { /* ...-snip...- */ });

    // ...-snip-...
}

public void Configure (IApplicationBuilder app)
{
    // ...-snip-...

    app.UseAuthentication();

    // ...-snip-...
}

我所有的应用程序在Startup.cs文件中共享相同的代码它与使用有关CookieAuthenticationDefaults吗?还是我想念我的东西ConfigureApplicationCookie

达斯

得到它了!看来我需要创建一个数据保护提供程序以在应用程序之间共享身份验证cookie以下是工作代码更改:

services.ConfigureApplicationCookie(options =>
{
    var protectionProvider = DataProtectionProvider.Create(new DirectoryInfo(@"c:\shared-auth-ticket-keys\"));

    options.Cookie.Name = ".AuthCookie";
    options.Cookie.Expiration = TimeSpan.FromDays(7);
    options.LoginPath = "/Account/Login";
    options.Cookie.Domain = ".example.com";
    options.DataProtectionProvider = protectionProvider;
    options.TicketDataFormat = new TicketDataFormat(protectionProvider.CreateProtector("Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationMiddleware", "Cookies", "v2"));
});

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在laravel子域中检查身份验证用户?

如何在所有Laravel视图中共享经过身份验证的用户

在 cookie 中保存身份验证

如何在所有域中搜索用户?

如何在JASPIC中保存经过身份验证的用户?

如何获取经过身份验证的用户信息并在所有控制器和服务中使用?

如何在带有supertest,passport和JEST的cookie中使用jwt测试身份验证

IsPersistent如何在OWIN Cookie身份验证中工作

在所有组件中关闭ubuntu 19.10中的身份验证

如果未通过身份验证,则在所有路由上重定向以登录

在所有虚拟服务器中对用户进行身份验证

Azure Insights 遥测未在所有事务中显示身份验证 ID

在子域中使用“身份验证”中间件

如何在Android上的所有片段中对Web服务进行身份验证?

如何使用Devise对所有页面进行身份验证?

使用BASIC身份验证集中保护所有tomcat Web应用程序

基于cookie的身份验证如何工作?

如何在 ggplot 中保留所有圖例

如何在 OWIN 应用程序中使用 cookie 身份验证和 WsFederation 身份验证

iframe 父级是否有权访问基于 cookie 的子级身份验证令牌?

IIS 7如何保留网站子文件夹身份验证设置

如何在任何域中保护 cookie?

如何在所有子商店添加基本验证码(不仅默认) - 打开购物车

如何禁用所有身份验证的验证步骤?(发送验证电子邮件)

如何在ASP.NET MVC 4中使用SimpleMembershipProvider拒绝所有通过身份验证的用户访问

当使用ASP.NET Core Web API中没有身份的cookie身份验证时,如何在登录时刷新CSRF令牌

如何在所有工作表中保持页眉(不是静态页眉)相同?

如何在所有 shell 中保存命令历史记录

我如何在所有活动中保持播放相同的歌曲