使用 Java 和 Azure 身分識別進行 Azure 驗證
本文提供適用於 Java 的 Azure 身分識別連結庫概觀,其提供跨 Azure SDK for Java 的 Microsoft Entra 令牌驗證支援。 此連結庫提供一組 TokenCredential
實作,可用來建構支援 Microsoft Entra 令牌驗證的 Azure SDK 用戶端。
Azure 身分識別連結庫目前支援:
- Java 開發環境中的 Azure 驗證,可啟用:
- IDEA IntelliJ 驗證,其中包含從適用於 IntelliJ 的 Azure 工具組擷取的登入資訊。
- Azure CLI 驗證,其中包含儲存在 Azure CLI 中的 登入資訊
- Azure 開發人員 CLI 驗證,其中包含儲存在 Azure 開發人員 CLI 中的 登入資訊
- Azure PowerShell 驗證,其中包含儲存在 Azure PowerShell 中的 登入資訊
- 驗證載入在 Azure 中的應用程式,以啟用:
DefaultAzureCredential
驗證- 受控識別驗證
- 使用服務主體進行驗證,以啟用:
- 用戶端密碼驗證
- 用戶端憑證驗證
- 使用使用者認證進行驗證,以啟用:
- 互動式瀏覽器驗證
- 裝置程式碼驗證
- 使用者名稱/密碼驗證
請遵循這些連結,深入瞭解每個驗證方法的詳細數據。 在本文中的其餘部分,我們會介紹常用的 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 應用程式的 DefaultAzureCredential 一節。
範例
如使用適用於 Java 的 Azure SDK 中所述,管理連結庫稍有不同。 其差異之一是有連結庫可用來取用 Azure 服務、稱為客戶端連結庫,以及管理 Azure 服務的連結庫,稱為管理連結庫。 在下列各節中,用戶端和管理連結庫中都有驗證的快速概觀。
驗證 Azure 用戶端連結庫
下列範例示範如何使用 從 azure-security-keyvault-secrets 用戶端連結庫驗證 。SecretClient
DefaultAzureCredential
// 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
: