【发布时间】:2019-01-28 20:34:59
【问题描述】:
我正在为一个爱好项目试验 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());
}
}
所以我的问题是;
- 还有其他人遇到过这种奇怪的行为吗?
- 如何正确处理在本地计算机上切换密钥库
【问题讨论】:
-
你的非开发环境是什么?天蓝色网络应用?
-
什么是
context? program.cs中默认没有变量 -
非开发环境是 Azure Web 应用。但问题出在开发者身上。
-
上下文是 WebHostBuilderContext 类型
标签: azure .net-core azure-keyvault