共用方式為


驗證 Azure 裝載的 Java 應用程式

本文探討 Azure 身分識別連結庫如何針對裝載於 Azure 上的應用程式支援Microsoft Entra 令牌驗證。 這項支援可透過本文所討論的 TokenCredential 一組實作來提供。

本文涵蓋下列主題:

如需針對與 Azure 裝載的應用程式相關的驗證問題進行疑難解答,請參閱 針對 Azure 裝載的應用程式驗證進行疑難解答。

DefaultAzureCredential

DefaultAzureCredential 結合部署時常用來驗證的認證,以及用來在開發環境中驗證的認證。 如需詳細資訊,請參閱 DefaultAzureCredential 概觀

設定 DefaultAzureCredential

DefaultAzureCredential 透過或環境變數上的 DefaultAzureCredentialBuilder setter 支援一組組態。

  • 設定環境變數AZURE_CLIENT_IDAZURE_CLIENT_SECRETAZURE_TENANT_ID ,如環境變數中所定義,會將 DefaultAzureCredential 設定為以值所指定的服務主體進行驗證。
  • 在產生器或環境變數AZURE_CLIENT_IDDefaultAzureCredential上設定.managedIdentityClientId(String)為以使用者指派的受控識別進行驗證,同時讓它們保持空白,以驗證為系統指派的受控識別。
  • 在產生器或環境變數AZURE_TENANT_ID上設定 .tenantId(String) ,會DefaultAzureCredential設定為向共用令牌快取或 IntelliJ IDEA 的特定租用戶進行驗證。
  • 設定環境變數 AZURE_USERNAMEDefaultAzureCredential 設定為從共用令牌快取中挑選對應的快取令牌。

使用 DefaultAzureCredential 進行驗證

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

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

使用 DefaultAzureCredential 驗證使用者指派的受控識別

下列範例示範如何使用部署至已設定使用者指派受控識別的 Azure 資源,從 azure-security-keyvault-secrets 用戶端連結庫DefaultAzureCredential驗證 SecretClient

/**
 * DefaultAzureCredential uses the user-assigned managed identity with the specified client ID.
 */
DefaultAzureCredential credential = new DefaultAzureCredentialBuilder()
  .managedIdentityClientId("<CLIENT_ID>")
  .build();

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

ManagedIdentityCredential

ManagedIdentityCredential 會驗證 Azure 資源的受控識別(系統指派或使用者指派)。 因此,如果應用程式是在支援透過 IDENTITY/MSIIMDS 端點或兩者進行受控識別的 Azure 資源內執行,則此認證會取得您的應用程式驗證,並提供無秘密的驗證體驗。

如需詳細資訊,請參閱什麼是適用於 Azure 資源的受控識別?

使用受控識別在 Azure 中驗證

下列範例示範SecretClient如何使用 ManagedIdentityCredential Azure 上的虛擬機、App Service、Functions 應用程式、Cloud Shell、Service Fabric、Arc 或 AKS 環境,在已啟用系統指派或使用者指派的受控識別中,從 azure-security-keyvault-secrets 用戶端連結庫驗證 。

/**
 * Authenticate with a user-assigned managed identity.
 */
ManagedIdentityCredential credential = new ManagedIdentityCredentialBuilder()
  .clientId("<CLIENT_ID>") // required only for user-assigned
  .build();

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

環境變數

您可以使用環境變數來設定 DefaultAzureCredentialEnvironmentCredential 。 每一種驗證類型都需要特定變數的值:

具備密碼的服務主體

變數名稱
AZURE_CLIENT_ID Microsoft Entra 應用程式的標識碼。
AZURE_TENANT_ID 應用程式Microsoft Entra 租用戶的標識碼。
AZURE_CLIENT_SECRET 其中一個應用程式的客戶端密碼。

具有憑證的服務主體

變數名稱
AZURE_CLIENT_ID Microsoft Entra 應用程式的標識碼。
AZURE_TENANT_ID 應用程式Microsoft Entra 租用戶的標識碼。
AZURE_CLIENT_CERTIFICATE_PATH PEM 編碼憑證檔案的路徑,包括私鑰(不含密碼保護)。
AZURE_CLIENT_CERTIFICATE_PASSWORD (選擇性)憑證檔案的密碼,如果有的話。
AZURE_CLIENT_SEND_CERTIFICATE_CHAIN (選擇性)在 x5c 標頭中傳送憑證鏈結,以支援主體名稱/簽發者型驗證。

使用者名稱與密碼

變數名稱
AZURE_CLIENT_ID Microsoft Entra 應用程式的標識碼。
AZURE_TENANT_ID 應用程式Microsoft Entra 租用戶的標識碼。
AZURE_USERNAME 使用者名稱(通常是電子郵件位址)。
AZURE_PASSWORD 指定使用者名稱的相關聯密碼。

此順序會嘗試設定。 例如,如果客戶端密碼和憑證的值都存在,則會使用客戶端密碼。

下一步

本文涵蓋 Azure 中裝載之應用程式的驗證。 這種形式的驗證是您可以在適用於 Java 的 Azure SDK 中驗證的多種方式之一。 下列文章說明其他方式:

如果您遇到與 Azure 裝載的應用程式驗證相關的問題,請參閱 針對 Azure 裝載的應用程式驗證進行疑難解答。

掌握驗證之後,請參閱 在 Azure SDK for Java 中設定記錄,以取得 SDK 所提供的記錄功能相關信息。