首页 > 解决方案 > 即使在禁用设置后 Azure Key Vault 也会返回机密

问题描述

我正在为一个爱好项目试验 Azure Key Vault。起初,我在本地开发,但现在我的数据库在 Azure 中。所以我希望这个连接字符串在 Key Vault 中是安全的。我设法通过 Visual Studio 中的连接服务选项来完成。连接已建立,一切都按预期工作。不过,现在我想在开发中使用 appsettings.json 中的配置值访问本地数据库。我认为通过将设置包装在 program.cs 中的 ConfigureAppConfiguration 委托中,如下所示将绕过 Key Vault 并转到本地 appsettings。但是在运行此代码时,我仍然得到 Key Vault 机密值(并且在调试中代码被跳过(所以 IsDevelopment 为真)

            if (!context.HostingEnvironment.IsDevelopment())
            {
                var builtConfig = config.Build();
                var keyVaultEndpoint = GetKeyVaultEndpoint();
                if (!string.IsNullOrEmpty(keyVaultEndpoint))
                {
                    var azureServiceTokenProvider = new AzureServiceTokenProvider();
                    var keyVaultClient = new KeyVaultClient(
                        new KeyVaultClient.AuthenticationCallback(
                            azureServiceTokenProvider.KeyVaultTokenCallback));
                    config.AddAzureKeyVault(
                        keyVaultEndpoint, keyVaultClient, new DefaultKeyVaultSecretManager());
                }
            }

所以我的问题是;

  1. 有没有其他人经历过这种奇怪的行为?
  2. 如何正确处理在本地计算机上切换密钥库

标签: azure.net-coreazure-keyvault

解决方案


事实证明它毕竟不是代码和密钥库。在实施 keyvault 之前,我已经对用户机密进行了试验,结果证明这仍然在我的配置提供程序中执行。当我调试时,我查看了 IConfiguration.Providers 的内容,发现我的设置存在于我计算机上的 secrets.json 中。

C:\Users\Username\AppData\Roaming\Microsoft\UserSecrets\e53d8827-fdcb-496d-8290-9ff7fcf0ec04

我希望其他有这个问题的人免于挖掘代码


推荐阅读