gpt4 book ai didi

java - 无法从 Azure key 保管库获取证书 - 无法获取新的访问 token

转载 作者:行者123 更新时间:2023-12-03 03:41:40 25 4
gpt4 key购买 nike

我在 azure 中创建了一个 key 保管库并存储了 secret 和证书。我正在使用托管身份来访问 key 保管库。从使用 java 的 Azure VM 中,我可以使用

从 key 保管库获取 secret

使用下面的代码我能够正确获取 secret 。

SecretClient secretClient = new SecretClientBuilder()
.httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS))
.vaultUrl("https://testkeyvault.vault.azure.net/")
.credential(new ManagedIdentityCredentialBuilder().build()).buildClient();
KeyVaultSecret keyVaultSecret = secretClient.getSecret("test-secret");
System.out.println(keyVaultSecret.getName());

但是当我尝试使用下面的代码获取证书时 -

CertificateClient certificateClient = new CertificateClientBuilder()
.httpLogOptions(new HttpLogOptions().setLogLevel(HttpLogDetailLevel.BODY_AND_HEADERS))
.vaultUrl("https://testkeyvault.vault.azure.net/")
.credential(new ManagedIdentityCredentialBuilder().build()).buildClient();

KeyVaultCertificateWithPolicy certificate = certificateClient.getCertificate("test-cert");

我得到了异常(exception) -

[main] ERROR com.azure.core.credential.SimpleTokenCache - Failed to acquire a new access token.
[parallel-2] ERROR com.azure.core.credential.SimpleTokenCache - Failed to acquire a new access token.
[parallel-4] ERROR com.azure.core.credential.SimpleTokenCache - Failed to acquire a new access token.
[parallel-6] ERROR com.azure.core.credential.SimpleTokenCache - Failed to acquire a new access token.
[parallel-6] WARN com.azure.security.keyvault.certificates.CertificateAsyncClient - Failed to Retrieve the certificate - test-cert
Max retries 3 times exceeded. Error Details: To convert to a resource string the specified array must be exactly length 1

在 keyvault 访问策略中,我已授予该虚拟机的所有权限,包括 GET key 和证书。但获取 secret 是有效的,而不是证书。有人可以帮我吗?

最佳答案

• 我建议您清除系统内存缓存,因为可能已经存在使用这些身份验证凭据进行的现有 session ,并且 token 可能存储在当前系统内存中,因此您可能无法访问通过 Java 应用程序将证书存储在 Key Vault 中。

此外,我建议您通过 Azure 中的任何现有 session 或并行 session 注销,然后重试。确保在 Key Vault 中上传的证书设置了正确的密码,以便从中检索托管标识的私钥。有关更多详细信息,请参阅以下使用 Java 从 Key Vault 检索证书的示例代码:-

请找到下面的链接,了解有关使用托管身份验证服务主体的更多详细信息:-

https://github.com/Azure/azure-sdk-for-java/wiki/Azure-Identity-Examples#authenticating-a-service-principal-with-a-client-certificate

关于java - 无法从 Azure key 保管库获取证书 - 无法获取新的访问 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70971821/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com