我想知道是否有一种方法可以设置 .net mvc 应用程序,就像可以使用 Key Vault 设置 .net 核心应用程序一样。
我希望能够在本地开发环境中提取机密,而无需预配 Azure Key Vault。
在 .net 核心应用程序中,我能够按照上面的链接并让一切正常工作。
// ran this command in powershell
dotnet user-secrets set "db-connection-string" "db-connection-string-value"
在 Program.cs 中使用空端点设置密钥保管库(这仅用于测试)。
public static IWebHost BuildWebHost(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((ctx, builder) =>
{
var keyVaultEndpoint = GetKeyVaultEndpoint();
if (!string.IsNullOrEmpty(keyVaultEndpoint))
{
var azureServiceTokenProvider = new AzureServiceTokenProvider();
var keyVaultClient = new KeyVaultClient(
new KeyVaultClient.AuthenticationCallback(
azureServiceTokenProvider.KeyVaultTokenCallback));
builder.AddAzureKeyVault(
keyVaultEndpoint, keyVaultClient, new DefaultKeyVaultSecretManager());
}
}
).UseStartup<Startup>()
.Build();
private static string GetKeyVaultEndpoint() => "";
我可以使用下面的代码在本地访问我的秘密。
public void OnGet()
{
Message = "My key val = " + _configuration["db-connection-string"];
}
在我的 asp.net 应用程序中,我能够从 Azure Key Vault 中提取机密。我只是不想在本地开发时这样做,因为每个开发人员的本地数据库的连接字符串可能略有不同,并且要求他们在 Azure 中使用 Key Vault 会很烦人并导致挫败感。也许我们不应该将 Key Vault 用于“遗留”应用程序。任何帮助表示赞赏。