使用 Java 和 Azure 标识进行 Azure 身份验证

本文概述了 Java Azure 标识库,该库跨 Azure SDK for Java 提供 Microsoft Entra 令牌身份验证支持。 此库提供了一组 TokenCredential 实现,可用于构造支持 Microsoft Entra 令牌身份验证的 Azure SDK 客户端。

Azure 标识库当前支持:

按照以下链接详细了解每种身份验证方法的详细信息。 本文的其余部分介绍了常用 DefaultAzureCredential 主题和相关主题。

添加 Maven 依赖项

若要添加 Maven 依赖项,请在项目的 pom.xml 文件中包含以下 XML。 替换为{version_number}最新稳定版本的版本号,如 Azure 标识库页上所示

<dependency>
    <groupId>com.azure</groupId>
    <artifactId>azure-identity</artifactId>
    <version>{version_number}</version>
</dependency>

关键概念

了解 Azure 标识库有两个关键概念:凭据的概念,以及该凭据 DefaultAzureCredential的最常见实现。

凭据是一种类,包含或可以获取服务客户端对请求进行身份验证所需的数据。 Azure SDK 中的服务客户端在构造时接受凭据,服务客户端使用这些凭据对服务的请求进行身份验证。

Azure 标识库侧重于使用 Microsoft Entra ID 进行 OAuth 身份验证,并提供各种凭据类,这些凭据类可以获取 Microsoft Entra 令牌以对服务请求进行身份验证。 此库中的所有凭据类都是 azure-coreTokenCredential 抽象类的实现,你可以使用其中任何一个类来构造可使用 TokenCredential 进行身份验证的服务客户端。

DefaultAzureCredential 适用于应用程序最终在 Azure 云中运行的大多数方案。 DefaultAzureCredential 将常用于在部署时进行身份验证的凭据与用于在开发环境中进行身份验证的凭据相结合。 有关详细信息(包括使用 DefaultAzureCredential 的示例),请参阅对 Azure 托管的 Java 应用程序进行身份验证默认 Azure 凭据部分。

示例

使用 Azure SDK for Java 中所述,管理库略有不同。 它们的一个不同之处在于,用于使用 Azure 服务的库称为客户端库,用于管理 Azure 服务的库称为管理库。 以下部分提供了在客户端库和管理库中进行身份验证的简要概述。

对 Azure 客户端库进行身份验证

以下示例演示如何使用 DefaultAzureCredentialSecretClientazure-security-keyvault-secrets 客户端库进行身份验证。

// Azure SDK client builders accept the credential as a parameter.
SecretClient client = new SecretClientBuilder()
  .vaultUrl("https://<your Key Vault name>.vault.azure.net")
  .credential(new DefaultAzureCredentialBuilder().build())
  .buildClient();

对 Azure 管理库进行身份验证

Azure 管理库使用与 Azure 客户端库相同的凭据 API,但还需要 Azure 订阅 ID 来管理该订阅上的 Azure 资源。

可以在 Azure 门户的“订阅”页上找到订阅 ID。 或者,使用以下 Azure CLI 命令获取订阅 ID:

az account list --output table

可以在 AZURE_SUBSCRIPTION_ID 环境变量中设置订阅 ID。 AzureProfile 在以下示例中创建 Manager 实例期间,将此 ID 选取为默认订阅 ID:

AzureResourceManager azureResourceManager = AzureResourceManager.authenticate(
        new DefaultAzureCredentialBuilder().build(),
        new AzureProfile(AzureEnvironment.AZURE))
    .withDefaultSubscription();

DefaultAzureCredential在此示例中使用 对实例进行身份验证AzureResourceManagerDefaultAzureCredential。 你也可以使用 Azure 标识库中提供的其他令牌凭据实现来代替 DefaultAzureCredential

疑难解答

有关指南,请参阅 排查 Azure 标识身份验证问题

后续步骤

本文介绍了 Azure SDK for Java 中提供的 Azure 标识功能。 在许多情况下,它被 DefaultAzureCredential 描述为常见和适当。 以下文章介绍了使用 Azure 标识库进行身份验证的其他方法,并提供有关以下内容的详细信息 DefaultAzureCredential