DataProtectionBuilder.ProtectKeysWithAzureKeyVault在.net 4.7.2中不起作用

时间:2019-01-12 05:25:00

标签: azure-keyvault cookie-authentication

ProtectKeysWithAzureKeyVault没有使用Azure KeyVault.net 4.7.2.提取密钥。但它在.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

2 个答案:

答案 0 :(得分:0)

正如article所说,mongoose方法仅适用于asp.net core 2.1和2.2 。因此它将在.net4.7.2中不起作用

答案 1 :(得分:0)

我可以在创建解决方案时使用AspNetCore和指向.NetFramework的框架来解决此问题。

通过这种安排,我可以将.AspNetCore函数与.Net 4.7.2程序集一起使用,以实现向后兼容性。

并使用常规的.NetCore中间件功能进行数据保护,如下所示

            services.AddDataProtection()
                .PersistKeysToAzureBlobStorage(container, blobName)
                .ProtectKeysWithAzureKeyVault("KeyUri","ClientId", "ClientSecret")
                .SetApplicationName("Name");