【发布时间】:2018-06-15 13:45:45
【问题描述】:
我正在尝试将我正在运行的服务的一些输出放在 Azure 的 Key Vault 中。我的服务的输出将是用户凭据,这就是我要为此目的使用 Key Vault 的原因。
到目前为止,我已经尝试过 KeyVaultClient 的 SetSecretAsync 方法,但它对我不起作用,我没有收到任何错误消息,但是我也没有看到在我的目标 KeyVault 中创建了新的机密。我找不到 KeyVaultClient Add Secret 方法,因为它不存在,我在这里使用正确的对象/方法吗?
这里讨论的方法是 AddResult。
这是我的代码:
private static AzureKeyVault instance;
private static KeyVaultClient client;
private AzureKeyVault()
{
//initialize the azure key vault
var vaultAddress = ConfigurationManager.AppSettings["VaultUri"];
client = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetAccessToken));
}
public static async Task<string> GetAccessToken(string authority, string resource, string scope)
{
var clientId = ConfigurationManager.AppSettings["ClientID"];
var clientSecret = ConfigurationManager.AppSettings["ClientSecret"];
ClientCredential clientCredential = new ClientCredential(clientId, clientSecret);
var context = new AuthenticationContext(authority, TokenCache.DefaultShared);
var result = await context.AcquireTokenAsync(resource, clientCredential);
return result.AccessToken;
}
public static AzureKeyVault GetInstance
{
get
{
if (instance == null)
{
instance = new AzureKeyVault();
}
return instance;
}
}
public void AddResult(string machineIPAndPort, BruteForceResult result)
{
client.SetSecretAsync("https://vaultURI(redacted).vault.azure.net/", machineIPAndPort, JsonConvert.SerializeObject(result));
}
【问题讨论】:
-
它不适合我是什么意思?
-
目标 == 标题(向 Key Vault 添加密钥)结果 == 未添加任何密钥,也没有错误消息。
-
Secret中machineIPandPort为名称,序列化结果为Value。
-
您不应该等待
SetSecretAsync的电话(或.Result,如果您真的很着急的话)?对我来说效果很好。 -
我该怎么做?只需将 SetSecretAsync 的输出保存到变量并等待它?像 var res = await client.SetSecretAsync 然后在 AddResult 上更改我的返回类型?
标签: c# azure azure-keyvault