【发布时间】:2017-09-29 00:59:21
【问题描述】:
一个假设的网站当前连接使用:
public SqlConnection CreateConnection()
{
DbConnection connection = new SqlConnection();
connection.ConnectionString = GetConnectionString();
connection.Open();
return connection;
}
神奇的连接字符串存放在web.config:
String GetConnectionString()
{
//Get the connection string info from web.config
ConnectionStringSettings cs = ConfigurationManager.ConnectionStrings["db"];
if (cs == null)
throw new Exception("Could not locate DB connection string");
return cs.ConnectionString;
}
现在我想将连接字符串从 web.config 文件移到 Azure KeyVault。如何从 Azure 密钥保管库中检索任何内容?
String GetConnectionString()
{
//Get the connection string info from Azure KeyVault
String connectionString = GetAzureSecret("dbConnectionString");
if (String.IsNullOrWhitespace(connectionString)
throw new Exception.Create("Could not connection string of Azure Key Vault");
return connectionString;
}
除了我刚刚编写了易于使用的 Azure API。 实际 api是什么?
未经测试的尝试
string GetAzureSecret(string key)
{
KeyVaultClient vault = new KeyVaultClient();
vault.OnAuthenticate += VaultClientAuthenticate;
var sec = await vault.GetSecretAsync(Key);
return sec.Value;
}
public static async Task<string> VaultClientAuthenticate(string authority, string resource, string scope)
{
String clientID = "8675209";
String clientSecret = "correct battery horse pencil";
var authContext = new AuthenticationContext(authority);
ClientCredential clientCred = new ClientCredential(clientID, clientSecret);
AuthenticationResult result = await authContext.AcquireTokenAsync(resource, clientCred);
if (result == null)
throw new Exception("Could not acquire token");
return result.AccessToken;
}
阅读奖励
【问题讨论】:
-
您指的是 Azure KeyVault 吗? docs.microsoft.com/en-us/azure/key-vault/… 有帮助吗?
-
@CtrlDot 确实是;将术语从商店更改为保险库。
标签: c# azure security connection-string azure-keyvault