我正在为一个业余项目试验 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());
}
}
所以我的问题是;
事实证明,这毕竟不是代码和密钥库。在实施 keyvault 之前,我已经尝试过用户机密,结果这仍然在我的配置提供程序中执行。当我调试时,我查看了 IConfiguration.Providers 的内容,发现我的设置存在于位于我计算机上的 secrets.json 中。
C:\Users\Username\AppData\Roaming\Microsoft\UserSecrets\e53d8827-fdcb-496d-8290-9ff7fcf0ec04
我希望其他有这个问题的人免于挖掘代码
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句