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 逻辑,但这绝对不是推荐的方法。
我正在使用 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 逻辑,但这绝对不是推荐的方法。