1

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()
    });
}

代码运行没有任何错误/异常。但没有调用 azure key vault。

问题是什么?

我已经安装了这两个 nuget 包

  • Microsoft.Owin.Security.Interop

  • Microsoft.AspNetCore.DataProtection.AzureKeyVault

4

2 回答 2

0

正如文章所说,该AzureDataProtectionBuilderExtensions.ProtectKeysWithAzureKeyVault方法仅适用于 asp.net core 2.1 和 2.2。所以它不会在 .net4.7.2 中工作

于 2019-01-14T07:00:31.273 回答
0

我可以通过在创建解决方案时使用带有指向 .NetFramework 的框架的 AspNetCore 来解决这个问题。

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

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

            services.AddDataProtection()
                .PersistKeysToAzureBlobStorage(container, blobName)
                .ProtectKeysWithAzureKeyVault("KeyUri","ClientId", "ClientSecret")
                .SetApplicationName("Name");
于 2019-01-17T06:20:32.673 回答