在设置数据保护和身份时,身份已经需要构建的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
答案 0 :(得分:1)
我发现上面的代码已经有效了。
简单地告诉数据保护将密钥存储在Azure中似乎会自动将Identity数据保护程序解析为同一存储。
与无共享密钥相比,只需要代码:
services.AddDataProtection().PersistKeysToAzureBlobStorage(tableContainer, "keys.xml");