如何设置Identity的Cookie数据保护以使用Azure存储数据保护程序

时间:2017-06-02 13:09:30

标签: asp.net-core asp.net-identity

在设置数据保护和身份时,身份已经需要构建的IDataProtectionProvider,而数据保护api不提供此功能。

ConfigureServices

IDataProtectionBuilder protectionBuilder = services
    .AddDataProtection()
    .PersistKeysToAzureBlobStorage(storageContainer, "keys.xml");
services.AddIdentity<ApplicationUser, IdentityRole>(options =>
{
    options.Cookies.ApplicationCookie.DataProtectionProvider = //NEEDS AN IDataProtectionProvider
}

对于自定义cookie,可以稍后在Configure:

中设置
app.UseCookieAuthentication(new CookieAuthenticationOptions()
{
    AutomaticChallenge = false,
    ExpireTimeSpan = TimeSpan.FromHours(1),
    DataProtectionProvider = app.ApplicationServices.GetService<IDataProtectionProvider>()
});

相关文档: https://docs.microsoft.com/en-us/aspnet/core/security/data-protection/compatibility/cookie-sharing

1 个答案:

答案 0 :(得分:1)

我发现上面的代码已经有效了。

简单地告诉数据保护将密钥存储在Azure中似乎会自动将Identity数据保护程序解析为同一存储。

与无共享密钥相比,只需要代码:

services.AddDataProtection().PersistKeysToAzureBlobStorage(tableContainer, "keys.xml");