
关于
使用 Microsoft Entra ID(Azure AD)对 Java 应用进行 Azure 服务认证。
name: azure-identity-java description: "使用Microsoft Entra ID(Azure AD)为Java应用程序进行Azure服务认证。" risk: unknown source: community date_added: "2026-02-27"
Azure Identity(Java)
使用Microsoft Entra ID(Azure AD)为Java应用程序进行Azure服务认证。
安装
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
<version>1.15.0</version>
</dependency>
关键概念
| 凭证 | 使用场景 |
|------|----------|
| DefaultAzureCredential | 推荐 - 开发和生产环境通用 |
| ManagedIdentityCredential | Azure托管应用(App Service、Functions、VM) |
| EnvironmentCredential | 使用环境变量的CI/CD管道 |
| ClientSecretCredential | 使用密钥的服务主体 |
| ClientCertificateCredential | 使用证书的服务主体 |
| AzureCliCredential | 使用 az login 的本地开发 |
| InteractiveBrowserCredential | 交互式登录流程 |
| DeviceCodeCredential | 无头设备认证 |
DefaultAzureCredential(推荐)
DefaultAzureCredential 按顺序尝试多种认证方法:
- 环境变量
- 工作负载标识
- 托管标识
- Azure CLI
- Azure PowerShell
- Azure Developer CLI
import com.azure.identity.DefaultAzureCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;
// 简单用法
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();
// 与任何Azure客户端一起使用
BlobServiceClient blobClient = new BlobServiceClientBuilder()
.endpoint("https://<storage-account>.blob.core.windows.net")
.credential(credential)
.buildClient();
KeyClient keyClient = new KeyClientBuilder()
.vaultUrl("https://<vault-name>.vault.azure.net")
.credential(credential)
.buildClient();
配置DefaultAzureCredential
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
.managedIdentityClientId("<user-assigned-client-id>")
.tenantId("<tenant-id>")
.build();
托管标识
// 系统分配的托管标识
ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder()
.build();
// 用户分配的托管标识
ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder()
.clientId("<user-assigned-client-id>")
.build();
服务主体(客户端密钥)
ClientSecretCredential credential = new ClientSecretCredentialBuilder()
.tenantId("<tenant-id>")
.clientId("<client-id>")
.clientSecret("<client-secret>")
.build();
环境变量
| 变量 | 描述 |
|------|------|
| AZURE_TENANT_ID | 租户ID |
| AZURE_CLIENT_ID | 客户端ID |
| AZURE_CLIENT_SECRET | 客户端密钥 |
| AZURE_CLIENT_CERTIFICATE_PATH | 证书路径 |
常见问题
- CredentialUnavailableException:没有可用的凭证方法
- AuthenticationException:凭证无效或过期
- 超时:网络问题或Azure AD不可达
兼容工具
Claude CodeCursor
标签
前端开发