SuperAPI AI 工具集

azure-identity-java

安全与审计

查看项目

更新于 10-16 02:17

技能介绍

Azure Identity(Java)用于让 Java 应用程序通过 Microsoft Entra ID(Azure AD)向 Azure 服务进行身份验证。

用途

该库提供统一的凭据抽象,使 Java 应用能够以一致的方式获取访问令牌,用于调用 Azure 服务(如 Blob 存储、Key Vault 等)。

主要能力

库提供多种凭据类型,适用于不同环境:

  • DefaultAzureCredential:推荐使用,在开发和生产环境均可工作,按顺序尝试环境变量、工作负载标识、托管标识、Azure CLI、Azure PowerShell、Azure Developer CLI。
  • ManagedIdentityCredential:适用于 Azure 托管应用(App Service、Functions、AKS、VM),支持系统分配和用户分配(按客户端 ID 或资源 ID)。
  • EnvironmentCredential:适用于使用环境变量的 CI/CD 流水线。
  • ClientSecretCredential:使用密钥的服务主体。
  • ClientCertificateCredential:使用证书的服务主体,支持 PEM、PFX 以及发送证书链(SNI)。
  • AzureCliCredential:本地开发使用 az login。
  • InteractiveBrowserCredential:交互式登录流程,适用于桌面应用。
  • DeviceCodeCredential:无头设备身份验证(IoT、CLI 工具)。
  • ChainedTokenCredential:自定义认证链。
  • WorkloadIdentityCredential:适用于 AKS 工作负载标识。
  • SharedTokenCacheCredential:共享令牌缓存,用于多凭据场景。

此外还支持令牌缓存、主权云(Azure Government、Azure China)、错误处理(CredentialUnavailableException、ClientAuthenticationException)以及日志记录(通过 AZURE_LOG_LEVEL 或 enableAccountIdentifierLogging)。

使用方式

在 Maven 项目中添加依赖: <dependency> <groupId>com.azure</groupId> <artifactId>azure-identity</artifactId> <version>1.15.0</version> </dependency>

然后根据环境选择合适的凭据构建器,例如: DefaultAzureCredential credential = new DefaultAzureCredentialBuilder().build(); 并将其传入 Azure 客户端构建器(如 BlobServiceClientBuilder、KeyClientBuilder)。

环境变量示例: AZURE_TENANT_ID、AZURE_CLIENT_ID、AZURE_CLIENT_SECRET、AZURE_CLIENT_CERTIFICATE_PATH、AZURE_CLIENT_CERTIFICATE_PASSWORD、AZURE_USERNAME、AZURE_PASSWORD、AZURE_FEDERATED_TOKEN_FILE、AZURE_LOG_LEVEL、AZURE_AUTHORITY_HOST。

适用场景

  • 本地开发:DefaultAzureCredential(使用 Azure CLI)
  • Azure App Service / Functions / VM:DefaultAzureCredential(使用托管标识)
  • Azure Kubernetes Service:WorkloadIdentityCredential
  • CI/CD 流水线:EnvironmentCredential
  • 桌面应用:InteractiveBrowserCredential
  • CLI 工具:DeviceCodeCredential

限制

仅当任务明确匹配上述范围时使用。不应将输出视为环境特定验证、测试或专家评审的替代。如果缺少必需的输入、权限、安全边界或成功标准,应停止并请求澄清。