java - 使用 Java 的 Azure Key Vault 证书管理
问题描述
我的解决方案涉及使用 Java 在 keyvault 中创建证书。以下是我尝试过但没有成功的方法。
- DefaultAzureCredentialBuilder:创建证书的最基本形式,其中我必须在环境变量中导出 clientId、clientSecret 和tenantId 并创建一个证书客户端,如下所示:
CertificateClient certificateClient = new CertificateClientBuilder()
.vaultUrl("https://valueUrl.vault.azure.net")
.credential(new DefaultAzureCredentialBuilder().build()).buildClient();
- ADAL:这是我更感兴趣的一个,因为我可以发送我的客户端 ID、秘密和租户 ID 的详细信息,然后实例化证书客户端。我尝试使用它,但仍然没有成功。片段如下:
ClientCertificateCredential certCreds = new ClientCertificateCredentialBuilder()
.clientId("clientId")
.pfxCertificate("C:\\MyCerft.pfx", "123")
.tenantId("tenantId").build();
CertificateClient certificateClient1 = new CertificateClientBuilder()
.vaultUrl("https://vaultUrl.vault.azure.net/")
.credential(certCreds).buildClient();
样本来源如下:
- https://github.com/Azure/azure-sdk-for-java/tree/master/sdk/keyvault/azure-security-keyvault-certificates
- https://github.com/Azure/azure-sdk-for-java/tree/master/sdk/identity/azure-identity
但是以上两者都抛出了与 credentialBuilder 类中签名不匹配的相同错误
com.azure.security.keyvault.certificates.CertificateClientBuilder"'s signer information does not match
signer information of other classes in the same package
以下是我的 pom 文件中的依赖项:
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-security-keyvault-certificates</artifactId>
<version>4.0.0</version>
</dependency> `
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.0.4</version> <!-- {x-version-update;com.azure:azure-identity;dependency} -->
</dependency>
我真的很想用第二种方式来做,因为这样更安全,并且可以让我做一些我必须在第一种情况下设置的配置设置。但是,在这一点上,我什至会选择第一个,以防有结果。
另外,我不明白为什么对于第二种方式,微软没有将客户端密码作为参数,而是期望证书(pfx/pem)对解决方案进行身份验证。因为,我相信 sdk 应该允许接受两种访问方式。
关于我可能在这里遗漏的任何建议都会有很大帮助,因为这是我直接从 Microsoft 的官方文档中挑选出来的。
干杯
解决方案
这可能是一个BUG。我通过使用以下版本的 SDK 解决了这个问题:
<!-- https://mvnrepository.com/artifact/com.azure/azure-identity -->
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.1.0-beta.2</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/com.azure/azure-security-keyvault-certificates -->
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-security-keyvault-certificates</artifactId>
<version>4.1.0-beta.1</version>
</dependency>
推荐阅读
- scala - 与 Semigroup 相比,后缀 -al 在 Semigroupal 中传达了什么?
- pytorch - 如何为 gpytorch 中的所有功能学习一个通用高斯过程
- javascript - 从 JQuery 检查/取消检查后 RadioListButton 选择无法正常工作
- excel - 有没有办法使用 VBA 代码将 Excel 工作簿保存到 Sharepoint?
- reactjs - Hook componentdidmount 不会重新渲染组件。可能是什么问题
- mysql - 尝试创建多对多关系时出现 MySQL 错误
- javascript - 比较两个对象的匹配值并将任何不匹配的值推送到单独的数组中,不断获得多个重复项
- php - Laravel 8 路线存在,但点击后什么也不做
- javascript - 做个西蒙游戏,不知道哪里错了
- python - 尝试从二进制文件中提取特定字节的数据时,从 struct.unpack 获取缓冲区大小错误