驗證 Azure 裝載的 Java 應用程式
本文探討 Azure 身分識別連結庫如何針對裝載於 Azure 上的應用程式支援Microsoft Entra 令牌驗證。 這項支援可透過本文所討論的 TokenCredential
一組實作來提供。
本文涵蓋下列主題:
如需針對與 Azure 裝載的應用程式相關的驗證問題進行疑難解答,請參閱 針對 Azure 裝載的應用程式驗證進行疑難解答。
DefaultAzureCredential
DefaultAzureCredential
結合部署時常用來驗證的認證,以及用來在開發環境中驗證的認證。 如需詳細資訊,請參閱 DefaultAzureCredential 概觀。
設定 DefaultAzureCredential
DefaultAzureCredential
透過或環境變數上的 DefaultAzureCredentialBuilder
setter 支援一組組態。
- 設定環境變數
AZURE_CLIENT_ID
、AZURE_CLIENT_SECRET
和AZURE_TENANT_ID
,如環境變數中所定義,會將DefaultAzureCredential
設定為以值所指定的服務主體進行驗證。 - 在產生器或環境變數
AZURE_CLIENT_ID
DefaultAzureCredential
上設定.managedIdentityClientId(String)
為以使用者指派的受控識別進行驗證,同時讓它們保持空白,以驗證為系統指派的受控識別。 - 在產生器或環境變數
AZURE_TENANT_ID
上設定.tenantId(String)
,會DefaultAzureCredential
設定為向共用令牌快取或 IntelliJ IDEA 的特定租用戶進行驗證。 - 設定環境變數
AZURE_USERNAME
會DefaultAzureCredential
設定為從共用令牌快取中挑選對應的快取令牌。
使用 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/MSI
、 IMDS
端點或兩者進行受控識別的 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();
環境變數
您可以使用環境變數來設定 DefaultAzureCredential
和 EnvironmentCredential
。 每一種驗證類型都需要特定變數的值:
具備密碼的服務主體
變數名稱 | 值 |
---|---|
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 所提供的記錄功能相關信息。