首页 > 解决方案 > KeyVaultClient 通过客户端库使用 GetSecretAsync 发出单个请求会生成对 Key Vault 的额外调用

问题描述

我们在 Service Fabric 中的应用程序上使用 KeyVaultClient 库,该库调用 Key Vault 来读取存储为机密的各种配置数据。代码对保管库进行身份验证的方式是通过具有 SSL 证书的 AAD 主体。代码创建了一个请求,但是当我们查看 Key Vault 日志时,对于代码创建的每个请求,Vault 都会被命中两次。第一次命中生成 401 Unauthorized,然后第二个请求是 Success。

似乎库可能首先尝试在没有我们请求中的凭据的情况下访问 Key Vault,然后再继续我们创建的请求。第二个请求完全按预期工作。这似乎是不必要的。有没有人有类似的经历?

标签: .net-coreazure-keyvault

解决方案


这是预期的行为。Azure Keyvault 具有一种身份验证模式,该模式将始终对保管库进行至少一次未经身份验证的调用。这是因为某些保管库要求使用 HSM 保护的密钥对发送给它们的消息进行加密。此信息在来自第一个未经身份验证的调用的身份验证质询中返回。

出于这个原因,每次您在该过程中向尚未连接的保险库发送请求时,sdk 首先发送带有空正文且没有授权标头的请求。这将导致 401 将具有身份验证和消息协议信息。

有关更多详细信息,您可以参考类似的问题


推荐阅读