Skip to content

如何在 Java 应用中快速集成 Azure 身份验证

解决 Java 开发者在调用 Azure 云服务时面临的多种认证场景痛点,通过统一的身份验证库实现从本地开发到生产环境的无缝切换。

为什么需要这个技能

在开发 Azure 云原生应用时,身份验证是核心环节。开发者往往面临一个矛盾:本地开发时习惯使用 az login 登录,而生产环境(如 App Service 或 AKS)则需要使用托管身份(Managed Identity)或服务主体(Service Principal)。

如果为每个环境编写不同的认证代码,会导致代码臃肿且易出错。azure-identity-java 提供了一个统一的凭据体系,尤其是 DefaultAzureCredential,能够自动根据运行环境尝试多种认证方式,从而实现“一次编写,到处运行”。

适用场景

  • 本地开发:直接利用本地 Azure CLI 的登录状态进行 API 调用。
  • 云端部署:在 Azure VM、App Service 或 Functions 中使用托管身份,无需在代码中硬编码密钥。
  • CI/CD 流水线:通过环境变量传递服务主体(Service Principal)凭据。
  • 桌面/命令行工具:实现交互式浏览器登录或设备代码(Device Code)验证。

核心工作流

1. 添加依赖

pom.xml 中引入核心库:

xml
<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
    <version>1.15.0</version>
</dependency>

2. 使用通用凭据(推荐)

DefaultAzureCredential 会按顺序尝试环境变量 托管身份 Azure CLI 等多种方式,是绝大多数场景的首选。

java
import com.azure.identity.DefaultAzureCredential;
import com.azure.identity.DefaultAzureCredentialBuilder;

// 构建通用凭据
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build();

// 将凭据注入 Azure 客户端(以 Blob 存储为例)
BlobServiceClient blobClient = new BlobServiceClientBuilder()
    .endpoint("https://<storage-account>.blob.core.windows.net")
    .credential(credential)
    .buildClient();

3. 针对特定场景的选择

根据环境选择最合适的凭据类:

  • 托管身份:使用 ManagedIdentityCredential,适用于 Azure 托管资源。
  • 服务主体(密钥):使用 ClientSecretCredential,适用于需要独立凭据的场景。
  • K8s 工作负载:使用 WorkloadIdentityCredential,专为 AKS 设计。

下载和安装

下载 azure-identity-java 中文版 Skill ZIP

解压后将目录放入你的 AI 工具 skills 文件夹,重启工具后即可使用。具体路径参考内附的 USAGE.zh.md

你可能还需要

暂无推荐