如何使用 Azure Java SDK 从 java 后端连接到 Azure Key Vault?
How connect to Azure Key Vault from java backend using Azure Java SDK?
已遵循此文档:
我收到错误:
AADSTS900382:跨云请求不支持机密客户端
请注意,这是政府云。
难道 Java 应用程序必须与 Azure Key Vault 托管在云中的同一台服务器上吗?因为这对我来说真的没有意义。
关于这个问题,那是因为所有 SDK 默认使用 https://login.microsoftonline.com
作为 Azure Active Directory 授权主机。每个其他云都有不同的权限主机端点。所以我们需要在创建DefaultAzureCredential
.
时更改权限主机
例如。我使用 SDK Azure Identity Version 1.1.0-beta.4
- 安装SDK
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.1.0-beta.4</version>
</dependency>
</dependencies>
- 代码
/**
* the class `KnownAuthorityHosts` has the all cloud Azure Active Directory authority enpoint :
* https://docs.microsoft.com/en-us/java/api/com.azure.identity.knownauthorityhosts?view=azure-java-preview
*/
DefaultAzureCredential cred = new DefaultAzureCredentialBuilder().
authorityHost(KnownAuthorityHosts.AZURE_US_GOVERNMENT)
.build();
SecretClient client = new SecretClientBuilder()
.vaultUrl(<your-vault-url>)
.credential(cred )
.buildClient();
详情请参考article
已遵循此文档:
我收到错误:
AADSTS900382:跨云请求不支持机密客户端
请注意,这是政府云。
难道 Java 应用程序必须与 Azure Key Vault 托管在云中的同一台服务器上吗?因为这对我来说真的没有意义。
关于这个问题,那是因为所有 SDK 默认使用 https://login.microsoftonline.com
作为 Azure Active Directory 授权主机。每个其他云都有不同的权限主机端点。所以我们需要在创建DefaultAzureCredential
.
例如。我使用 SDK Azure Identity Version 1.1.0-beta.4
- 安装SDK
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.1.0-beta.4</version>
</dependency>
</dependencies>
- 代码
/**
* the class `KnownAuthorityHosts` has the all cloud Azure Active Directory authority enpoint :
* https://docs.microsoft.com/en-us/java/api/com.azure.identity.knownauthorityhosts?view=azure-java-preview
*/
DefaultAzureCredential cred = new DefaultAzureCredentialBuilder().
authorityHost(KnownAuthorityHosts.AZURE_US_GOVERNMENT)
.build();
SecretClient client = new SecretClientBuilder()
.vaultUrl(<your-vault-url>)
.credential(cred )
.buildClient();
详情请参考article