我已成功列出 Azure KeyVault 中的所有 secret - 但是每次我想要获取下一个 secret 时,我都需要进行调用以获取 token 。
如何存储凭据,以便我只需在循环期间登录一次?
public async Task<List<string>> getsecretslist(string url)
{
var kv = new KeyVaultClient(new KeyVaultClient.AuthenticationCallback(GetToken));
List<string> secretlist = new List<string>();
var all = kv.GetSecretsAsync(url);
var myId = "";
foreach (Microsoft.Azure.KeyVault.Models.SecretItem someItem in all.Result)
{
myId = someItem.Id;
var mOtherThing = someItem.Identifier;
var yep = await kv.GetSecretAsync(mOtherThing.ToString());
secretlist.Add(yep.Value);
}
return secretlist;
}
最佳答案
在 GetToken 回调方法中,您需要缓存访问 token ,只要它有效且未过期。然后您的回调将返回缓存的访问 token ,而不是再次进行身份验证。以下代码片段将使用 ADAL 默认 token 缓存(例如 TokenCache.DefaultShared)。
public static async Task<string> GetToken(string authority, string resource, string scope)
{
var assertionCert = new ClientAssertionCertificate(clientId, certificate);
var context = new AuthenticationContext(authority, TokenCache.DefaultShared);
var result = await context.AcquireTokenAsync(resource, assertionCert).ConfigureAwait(false);
return result.AccessToken;
}
关于c# - 列出 KeyVault 中的 secret 而无需登录每个 secret ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42653817/