.net core KeyVault客户端通过客户端库使用GetSecretAsync发出单个请求时,会生成对Key Vault的附加调用

.net core KeyVault客户端通过客户端库使用GetSecretAsync发出单个请求时,会生成对Key Vault的附加调用,.net-core,azure-keyvault,.net Core,Azure Keyvault,我们正在Service Fabric中的一个应用程序上使用KeyVault客户端库,该应用程序调用密钥Vault来读取存储为机密的各种配置数据。代码对vault进行身份验证的方式是通过带有SSL证书的AAD主体。代码正在创建单个请求,但当我们查看关键Vault日志时,对于代码创建的每个请求,Vault都会被命中两次。第一次命中生成一个401未经授权的请求,然后第二次请求成功 似乎在继续执行我们创建的请求之前,库可能首先尝试在请求中没有凭据的情况下访问密钥库。第二个请求完全按照预期工作。这似乎没有

我们正在Service Fabric中的一个应用程序上使用KeyVault客户端库,该应用程序调用密钥Vault来读取存储为机密的各种配置数据。代码对vault进行身份验证的方式是通过带有SSL证书的AAD主体。代码正在创建单个请求,但当我们查看关键Vault日志时,对于代码创建的每个请求,Vault都会被命中两次。第一次命中生成一个401未经授权的请求,然后第二次请求成功


似乎在继续执行我们创建的请求之前,库可能首先尝试在请求中没有凭据的情况下访问密钥库。第二个请求完全按照预期工作。这似乎没有必要。有人有过类似的经历吗?

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

因此,每次向尚未连接到的vault发送请求时,sdk都会首先发送带有空正文且没有授权标头的请求。这将产生一个401,其中包含身份验证和消息协议信息


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

您可以分享您的代码吗?