使用CookieAuthentication实现ASP.NET 5 Identity 3.0可伸缩性

时间:2016-01-14 15:42:17

标签: c# asp.net-core asp.net-identity-3

我使用ASP.NET 5和MVC6。我正在使用Identity 3.0,但我需要知道如何使它适用于许多Web服务器。

可以将会话存储在其他地方吗?数据库?在MVC5中你是在web.config中做到的,但我没有在MVC6中找到有关它的信息。

这是我在Startup.cs中的代码

app.UseCookieAuthentication(options =>
            {
                options.AutomaticAuthenticate = true;
                options.LoginPath = new PathString("/Account/Login");
                options.AutomaticChallenge = true;
            });

谢谢!

1 个答案:

答案 0 :(得分:3)

默认情况下,存储在cookie中的身份验证票证是自包含的:知道加密密钥足以检索原始票证(此过程中没有商店或数据库)。

要确保所有服务器都可以读取您的身份验证Cookie,您需要同步他们用来加密和解密身份验证票证的密钥环。这可以使用UNC共享来完成,如文档中所述:http://docs.asp.net/en/latest/security/data-protection/configuration/overview.html

public void ConfigureServices(IServiceCollection services) {
    services.AddDataProtection();

    services.ConfigureDataProtection(options => {
        options.PersistKeysToFileSystem(new DirectoryInfo(@"\\server\share\directory\"));
    });
}

或者,您也可以提供自己的TicketDataFormat来覆盖序列化/加密逻辑,但它绝对不是推荐的方法。