ASP.NET 5 使用 CookieAuthentication 的 Identity 3.0 可扩展性

ASP.NET 5 Identity 3.0 scalability with CookieAuthentication

我正在使用 ASP.NET 5 和 MVC6。我正在使用 Identity 3.0,但我需要知道如何让它与许多网络服务器一起工作。

是否可以将会话存储在其他地方?数据库?在 MVC5 中,您在 web.config 中执行了此操作,但我在 MVC6 中未找到有关它的信息。

这是我在 Startup.cs

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

谢谢!!

默认情况下,存储在 cookie 中的身份验证票证是 self-contained:知道加密密钥就足以检索原始票证(此过程不涉及存储或数据库)。

为了确保您的所有服务器都可以读取您的身份验证 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 来覆盖 serialization/encryption 逻辑,但这绝对不是推荐的方法。