ProtectKeysWithAzureKeyVault
未使用.net 4.7.2.
从Azure KeyVault
提取密钥。但它在.netcore 2.2
中运行良好
我做以下事情:
public void ConfigureAuth(IAppBuilder app)
{
app.UseCookieAuthentication(new CookieAuthenticationOptions
{
AuthenticationType = "Identity.Application",
CookieName = ".AspNet.SharedCookie",
LoginPath = new PathString("/Account/Login"),
TicketDataFormat = new AspNetTicketDataFormat(
new DataProtectorShim(
DataProtectionProvider.Create(new DirectoryInfo(@"E:SBH"), (builder) => {
builder
.ProtectKeysWithAzureKeyVault(
"https://test.vault.azure.net/keys/jwt",
"ClientID",
"ClientScret")
.PersistKeysToFileSystem(new DirectoryInfo(@"E:SBH"));
}).CreateProtector(
"Microsoft.AspNetCore.Authentication.Cookies.CookieAuthenticationMiddleware",
"Identity.Application",
"v2"))),
CookieManager = new ChunkingCookieManager()
});
}
代码运行时没有任何错误/异常。但没有打电话到天蓝钥匙库。
问题出在哪里?
我已经安装了这两个nuget包
Microsoft.Owin.Security.Interop
Microsoft.AspNetCore.DataProtection.AzureKeyVault
正如文章所说,AzureDataProtectionBuilderExtensions.ProtectKeysWithAzureKeyVault
方法仅适用于asp.net核心2.1和2.2。因此它将在.net4.7.2中不起作用。
在创建解决方案时,我可以通过使用AspNetCore和指向.NetFramework的框架来解决这个问题。
有了这种安排,我可以将.AspNetCore函数与.Net 4.7.2程序集一起使用,以实现向后兼容性。
并使用Regular.NetCore中间件功能进行数据保护,如下面的
services.AddDataProtection()
.PersistKeysToAzureBlobStorage(container, blobName)
.ProtectKeysWithAzureKeyVault("KeyUri","ClientId", "ClientSecret")
.SetApplicationName("Name");