使用DataProtectionProvider连接到Azure Key Vault

时间:2019-10-11 20:18:18

标签: azure asp.net-core azure-keyvault

我很难配置.Net Core的DataProtectionProvider来将密钥存储在Azure密钥保管库中。问题是我似乎无法创建正确的Blob URI,或者至少我认为这是问题所在,因为其他所有事情似乎都井然有序,但我仍然遭到未授权。

在Azure中,我已经注册了一个应用程序和客户端密钥,创建了一个保管库和密钥,以及一个访问策略,为该应用程序提供了几乎所有的权限。

这是我的ConfigureServices的相关部分:

        string uri = "https://{vault-name}.vault.azure.net/keys/{vault-name}/{key}" + "se=2020-01-01&sp=r&spr=https&sv=2018-11-09&sr=b&sig={sig}";
        string keyIdentifier = "https://{vault-name}.vault.azure.net/keys/{vault-name}";
        string clientId = "{application-id";
        string clientSecret = "{client-secret}";

        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_3_0);
        services.AddDataProtection()
            .PersistKeysToAzureBlobStorage(new Uri(uri)) // requires Microsoft.AspNetCore.DataProtection.AzureStorage
            .ProtectKeysWithAzureKeyVault(keyIdentifier, clientId, clientSecret); //requires Microsoft.AspNetCore.DataProtection.AzureKeyVault
        services.AddControllers();

我很想知道如何生成sas。该文档似乎暗示这某种程度上与存储帐户有关,但是我看不到任何将存储帐户与密钥保险库相关联的明显方法。因此,我尝试了与Azure CLI不同的方法,但是似乎没有任何方法可以使我过去的身份验证得到实现。

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您似乎正在尝试将Key Vault的uri传递给.PeristKeysToAzureBlobStorage()。取而代之的是,您需要为要保存密钥环的存储空间传递uri的uri。 Azure Storage provider的文档中对此进行了说明。

您可以如图所示通过门户生成SAS链接,也可以utilize the CLI创建链接。

enter image description here