本文提供適用於 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 相依性
在您的專案中包含 azure-sdk-bom,以依賴該函式庫的穩定版本。 在下列程式碼片段中,將 {bom_version_to_target} 預留位置取代為版本號碼。 若要深入瞭解 BOM,請參閱 開始使用 Azure SDK 和 Apache Maven 將適用於 Java 的 Azure SDK 新增至現有專案 一節。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-sdk-bom</artifactId>
<version>{bom_version_to_target}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
然後在不含版本標籤的 dependencies 區段中包含直接相依性:
<dependencies>
<dependency>
<groupId>com.azure</groupId>
<artifactId>azure-identity</artifactId>
</dependency>
</dependencies>
重要概念
瞭解 Azure 身分識別連結庫有兩個重要概念:認證的概念,以及該認證最常見的實作。 DefaultAzureCredential
認證是類別,其中包含或可取得服務客戶端驗證要求所需的數據。 跨 Azure SDK 的服務用戶端會在建構認證時接受認證,而服務用戶端會使用這些認證來驗證服務的要求。
Azure 身分識別連結庫著重於具有 Microsoft Entra 識別符的 OAuth 驗證,並提供各種認證類別,可取得Microsoft Entra 令牌來驗證服務要求。 該程式庫中的所有憑證類別都是在 azure-coreTokenCredential中抽象類的實作,您可以使用其中任何一個來建構可對TokenCredential進行驗證的服務客戶端。
DefaultAzureCredential 適用於應用程式最終在 Azure 雲端中執行的大部分案例。
DefaultAzureCredential 結合部署時常用來驗證的認證,以及用來在開發環境中驗證的認證。 如需詳細資訊,包括使用 DefaultAzureCredential的範例,請參閱驗證 Azure 裝載 Java 應用程式的 DefaultAzureCredential 一節。
範例
如使用 Azure SDK for Java 中提到的,管理函式庫稍有不同。 其差異的其中一種方式是,有一些連結庫可用來取用 Azure 服務,稱為 用戶端連結庫,以及管理 Azure 服務的連結庫,稱為 管理連結庫。 在下列各節中,用戶端和管理函式庫中提供驗證的快速概覽。
驗證 Azure 用戶端連結庫
下列範例示範如何使用 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在此範例中,使用 AzureResourceManager 來驗證 DefaultAzureCredential 實例。 您也可以使用 Azure 身分識別連結庫中提供的其他權杖認證實作來取代 DefaultAzureCredential。
疑難排解
如需指引,請參閱 Azure 身分識別驗證問題疑難解答。
下一步
本文介紹適用於 Java 的 Azure SDK 中提供的 Azure 身分識別功能。 在許多情況下,它描述 DefaultAzureCredential 為常見且適當。 下列文章描述使用 Azure 身分識別庫進行驗證的其他方式,並提供有關DefaultAzureCredential的詳細資訊。