代码之家  ›  专栏  ›  技术社区  ›  Jim O'Neil

检测KeyVault中不存在的密钥的正确方法是什么

  •  5
  • Jim O'Neil  · 技术社区  · 9 年前

    我正在使用2.3.2 Microsoft.Azure中的KeyVaultClient。KeyVault NuGet。使用GetSecretAsync(,),我注意到如果我尝试访问一个不存在的秘密,就会引发KeyVaultErrorException。

    不幸的是,当对keyvault的访问被拒绝或找不到keyvault端点时,也会出现相同的错误。

    我目前看到的唯一区别是消息属性。那么,什么是检测未发现秘密的正确方法呢?为什么这会引发异常,而不是返回null或其他“空”对象?

    1 回复  |  直到 9 年前
        1
  •  3
  •   evilSnobu    6 年前

    询问不存在的秘密:

    System.AggregateException occurred
      HResult=0x80131500
      Message=One or more errors occurred.
      Source=mscorlib
    
    Inner Exception 1:
    KeyVaultErrorException: Secret not found: secret22222
    
    ((Microsoft.Azure.KeyVault.Models.KeyVaultErrorException)($exception).InnerException)
        .Body.Error.Code = "SecretNotFound"
    ((Microsoft.Azure.KeyVault.Models.KeyVaultErrorException)($exception).InnerException)
        .Body.Error.Message = "Secret not found: secret22222"
    

    没有阅读秘密的权利:

    System.AggregateException occurred
      HResult=0x80131500
      Message=One or more errors occurred.
      Source=mscorlib
    
    Inner Exception 1:
    KeyVaultErrorException: Access denied
    
    ((Microsoft.Azure.KeyVault.Models.KeyVaultErrorException)($exception).InnerException)
        .Body.Error.Code = "Forbidden"
    ((Microsoft.Azure.KeyVault.Models.KeyVaultErrorException)($exception).InnerException)
        .Body.Error.Message = "Access denied"
    

    尝试读取禁用的机密:

    System.AggregateException occurred
      HResult=0x80131500
      Message=One or more errors occurred.
      Source=mscorlib
    
    Inner Exception 1:
    KeyVaultErrorException: Operation get is not allowed on a disabled secret.
    
    ((Microsoft.Azure.KeyVault.Models.KeyVaultErrorException)($exception).InnerException)
        .Body.Error.Code = "Forbidden"
    ((Microsoft.Azure.KeyVault.Models.KeyVaultErrorException)($exception).InnerException)
        .Body.Error.Message = "Operation get is not allowed on a disabled secret."
    

    无效的vault终结点:

    System.AggregateException occurred
      HResult=0x80131500
      Message=One or more errors occurred.
      Source=mscorlib
    
    Inner Exception 1:
    HttpRequestException: An error occurred while sending the request.
    
    Inner Exception 2:
    WebException: The remote name could not be resolved: 'alicezzzzzz.vault.azure.net'
    

    在我看来没有那么糟糕。如果你期望输入错误很严重,我认为这不会发生,因为SDK只是一个很轻的REST包装器,可能(部分?)生成人 AutoRest 项目现场 ).

    推荐文章