使用 Java 和 Azure 身分識別進行 Azure 驗證

本文提供 Java Azure 身分識別連結庫的概觀,其提供適用於 Java 的 Azure SDK 的 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 識別符進行 OAuth 驗證,並提供各種認證類別,以取得 Microsoft Entra 令牌來驗證服務要求。 此連結庫中的所有認證類別都是 azure-core抽象類的TokenCredential實作,而且您可以使用其中任何一個認證類別來建構可向 TokenCredential進行驗證的服務用戶端。

DefaultAzureCredential 適用於應用程式最終在 Azure 雲端中執行的大部分案例。 DefaultAzureCredential 結合部署時常用來驗證的認證,以及用來在開發環境中驗證的認證。 如需詳細資訊,包括使用 DefaultAzureCredential的範例,請參閱驗證 Azure 裝載的 Java 應用程式的預設 Azure 認證一節。

範例

如使用適用於 Java 的 Azure SDK 中所述,管理連結庫稍有不同。 其差異之一是有連結庫可用來取Azure 服務、稱為客戶端連結庫,以及管理 Azure 服務的連結庫,稱為管理連結庫。 在下列各節中,用戶端和管理連結庫中都有驗證的快速概觀。

驗證 Azure 用戶端連結庫

下列範例示範如何使用 從 azure-security-keyvault-secrets 用戶端連結庫驗證 。SecretClientDefaultAzureCredential

// 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 訂用帳戶標識碼 來管理該訂用帳戶上的 Azure 資源。

您可以在 Azure 入口網站 的 [訂用帳戶] 頁面上找到訂用帳戶標識碼。 或者,使用下列 Azure CLI 命令來取得訂用帳戶識別碼:

az account list --output table

您可以在環境變數中 AZURE_SUBSCRIPTION_ID 設定訂用帳戶標識碼。 AzureProfile 在下列範例中建立 Manager 實例期間,會挑選此標識碼作為預設訂用帳戶標識碼:

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

DefaultAzureCredential在此範例中使用的 會使用 DefaultAzureCredential來驗證 AzureResourceManager 實例。 您也可以使用 Azure 身分識別連結庫中提供的其他權杖認證實作來取代 DefaultAzureCredential

疑難排解

如需指引,請參閱 針對 Azure 身分識別驗證問題進行疑難解答。

下一步

本文介紹適用於 Java 的 Azure SDK 中提供的 Azure 身分識別功能。 在許多情況下,它描述 DefaultAzureCredential 為常見且適當。 下列文章說明使用 Azure 身分識別連結庫進行驗證的其他方式,並提供的詳細資訊 DefaultAzureCredential