小编ezy*_*der的帖子

如何在本地和托管环境(Azure 和本地)中使用 DefaultAzureCredential 来访问 Azure Key Vault?

我们有一个 Web api(.NET 5),它可以从 Azure KeyVault 访问一些机密。
在用于开发的本地计算机中,由于我是创建的新保管库的所有者,因此我的电子邮件具有对 keyvault 的访问权限。

因此,我通过 VS --> 工具 > 选项 --> Azure 服务身份验证 --> 帐户选择 --> "myemail@.com" 选择了我的帐户

我有下面的代码来从 Keyvault 获取机密并通过配置进行访问,就像我们访问 appsettings 值一样。

public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
        .ConfigureAppConfiguration((context, config) =>
        {
            var appSettings = config.Build();
            var credentialOptions = new DefaultAzureCredentialOptions();
            var credential = new DefaultAzureCredential(credentialOptions);
            config.AddAzureKeyVault(new Uri(appSettings["Url:KeyVault"]), credential);
        })
       .ConfigureWebHostDefaults(webBuilder =>
            {
                webBuilder.UseStartup<Startup>();
            });
}
Run Code Online (Sandbox Code Playgroud)

我们在服务和控制器层中访问像 _configuration["secret"] 这样的秘密值。

我的查询是

1,如果我将此代码部署到本地服务器,它将如何工作(开发环境是本地服务器)?

2,如果我将此Web API部署到Azure,如何使用身份AD应用程序访问密钥保管库而无需更改任何代码。我们注册了 AD 应用程序,该应用程序具有对此特定 Vault 的读取权限。

我希望代码能够在本地和 Azure 上无缝运行。

azure-keyvault azure-managed-identity .net-5 defaultazurecredential

10
推荐指数
1
解决办法
1万
查看次数