c# - 列出 KeyVault 中的 secret 而无需登录每个 secret ?

标签 c# asp.net-mvc azure azure-keyvault

我已成功列出 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/

相关文章:

sql-server - 无法连接到 Azure SQL 数据库

C# Xml 反序列化错误

c# - .NET 图表自定义标签位置

c# - 将两个日期相加

c# - OWIN/Katana中间件经典asp页面跳过管道

asp.net-mvc - 在 View 中创建 DropDownListFor 项目

azure - 复制前如何转换列?

c# - 从表单中提取填充方法

asp.net-mvc - 在 View 中引用脚本库并使用 _Layout.cshtml 是否多余?

azure - 在 Visual Studio 中,我可以将 C# 部署到我自己的 Azure 虚拟机而不是 Azure 辅助角色吗?