如何检查Azure Key Vault中的机密是否存在

时间:2018-10-26 17:38:49

标签: c# azure-keyvault

我们团队中的每个开发人员都有与自己的本地计算机相关联的个人 Azure密钥库。我们的生产站点具有一个生产Azure密钥库。

在代码中,它从库中查找特定秘密。开发人员不会在其个人密钥库中拥有秘密,但是生产密钥库将具有秘密。

因此,在开发人员进行调试时,它将捕获一个异常,指出该秘密不存在。

是否可以有条件地检查 秘密是否存在 ,还是只需要让它捕获异常?

3 个答案:

答案 0 :(得分:4)

没有方法可以检查密钥库中是否存在秘密。因此,可以采用一些创造力来做到这一点(跳过的参数检查简洁程度):

function test(){
   this.array.forEach(function(){});
}

编辑: 找到了一种无需依赖异常即可检查机密是否存在的方法:

    public bool CheckIfSecretExists(string accessToken, string secretUri)
    {
        var kvClient= new KeyVaultClient(accessToken);
        try
        {
            kvClient.GetSecretAsync(secretUri ).Result.Value;
            return true;
        }
        catch (AggregateException ex)
        {
            if (ex.InnerException is KeyVaultErrorException exception && exception.Body.Error.Code == "SecretNotFound")
                return false;

            throw;
        }
    }

答案 1 :(得分:0)

检查错误是否未在异常中找到的更简单方法是来自HTTPRequest响应

$('.owl-item:not(.cloned) * .desert-safari-gallery').magnificPopup(..

答案 2 :(得分:-2)

使用Azure中的默认凭据创建一个新的秘密客户端,并使用先前设置的环境变量(包括AZURE_CLIENT_ID,AZURE_CLIENT_SECRET和AZURE_TENANT_ID)来标识新身份。

var client = new SecretClient(vaultUri: new Uri(keyVaultUrl), credential: new DefaultAzureCredential());

使用机密客户端检索机密。

secret = client.GetSecret("secret-name");