Java 開發環境中的 Azure 驗證

本文提供 Microsoft Entra 令牌驗證的 Azure 身分識別連結庫支援概觀。 這項支援可透過一組 TokenCredential 實作,為在開發人員計算機上本機執行的應用程式啟用驗證。

本文涵蓋下列主題:

如需針對開發環境驗證問題進行疑難解答,請參閱 針對開發環境驗證進行疑難解答。

裝置程式代碼認證

裝置程式代碼認證會以互動方式驗證具有有限 UI 的裝置上的使用者。 其運作方式是提示使用者在應用程式嘗試驗證時,流覽已啟用瀏覽器之電腦上的登入URL。 然後,用戶會輸入指示中提及的裝置程序代碼,以及其登入認證。 成功驗證時,要求驗證的應用程式會在執行時成功在裝置上進行驗證。

如需詳細資訊,請參閱 Microsoft 身分識別平台 和 OAuth 2.0 裝置授權授與流程

啟用裝置程式代碼流程的應用程式

若要透過裝置程式代碼流程驗證使用者,請執行下列步驟:

  1. 移至 Azure 入口網站 中的 Microsoft Entra 識別碼,然後尋找您的應用程式註冊。
  2. 流覽至 [ 驗證] 區段。
  3. 在 [建議的重新導向 URI] 下,檢查以 結尾的 /common/oauth2/nativeclientURI。
  4. 在 [預設用戶端類型] 底下,針對 [將應用程式視為公用用戶端] 選取 []。

這些步驟可讓應用程式進行驗證,但仍沒有將您登入 Microsoft Entra ID 的許可權,或代表您存取資源。 若要解決此問題,請流覽至 [API 許可權],然後啟用 Microsoft Graph 和您想要存取的資源。

當您第一次登入時,您也必須是租用戶的系統管理員,才能授與應用程式同意。

如果您無法在 Microsoft Entra ID 上設定裝置程式代碼流程選項,則可能需要您的應用程式成為多租使用者。 若要讓應用程式成為多租使用者,請流覽至 [驗證 ] 面板,然後選取 [任何組織目錄中的帳戶]。 然後,針對 [將應用程式視為公用用戶端] 選取 []。

使用裝置程式代碼流程驗證用戶帳戶

下列範例示範如何使用 DeviceCodeCredential IoT裝置上的 ,從 azure-security-keyvault-secrets 用戶端連結庫驗證 SecretClient

DeviceCodeCredential deviceCodeCredential = new DeviceCodeCredentialBuilder()
  .challengeConsumer(challenge -> {
    // lets user know of the challenge
    System.out.println(challenge.getMessage());
  }).build();

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

互動式瀏覽器認證

此認證會以互動方式使用預設系統瀏覽器來驗證使用者,並可讓您使用自己的認證來驗證應用程式,以提供順暢的驗證體驗。

啟用互動式瀏覽器 OAuth 2 流程的應用程式

若要使用 InteractiveBrowserCredential,您必須在 Microsoft Entra ID 中註冊應用程式,並具有代表使用者登入的許可權。 請遵循裝置程式代碼流程的先前步驟來註冊您的應用程式。 如先前所述,租用戶的系統管理員必須先授與應用程式同意,才能讓任何使用者帳戶登入。

您可能會注意到,在 中 InteractiveBrowserCredentialBuilder,需要重新導向 URL。 將重新導向 URL 新增至已註冊 Microsoft Entra 應用程式的 [驗證] 區段底下的 [重新導向 URI] 子區段。

在瀏覽器中以互動方式驗證用戶帳戶

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

InteractiveBrowserCredential interactiveBrowserCredential = new InteractiveBrowserCredentialBuilder()
  .clientId("<your client ID>")
  .redirectUrl("http://localhost:8765")
  .build();

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

Azure CLI 認證

Azure CLI 認證會在開發環境中使用 Azure CLI 中已啟用的使用者或服務主體進行驗證。 它會使用 Azure CLI 來指定已登入的使用者,並使用 CLI 來針對 Microsoft Entra ID 驗證應用程式。

登入 Azure CLI for AzureCliCredential

使用下列 Azure CLI 命令以使用者身分登入:

az login

使用下列命令以服務主體身分登入:

az login \
    --service-principal \
    --username <client-ID> \
    --password <client-secret> \
    --tenant <tenant-ID>

如果帳戶或服務主體可以存取多個租使用者,請確定所需的租用戶或訂用帳戶在下列命令的輸出中處於「已啟用」狀態:

az account list

在程式代碼中使用 AzureCliCredential 之前,請執行下列命令來確認帳戶已成功設定。

az account get-access-token

視組織中的重新整理令牌有效性而定,您可能需要在特定時間週期之後重複此程式。 一般而言,重新整理令牌有效期間是數周到幾個月。 AzureCliCredential 會提示您再次登入。

使用 Azure CLI 驗證用戶帳戶

下列範例示範在AzureCliCredential已安裝並登入 Azure CLI 的工作站上使用 ,從 azure-security-keyvault-secrets 用戶端連結庫驗證 SecretClient

AzureCliCredential cliCredential = new AzureCliCredentialBuilder().build();

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

IntelliJ 認證

IntelliJ 認證會在開發環境中使用適用於 IntelliJ 的 Azure 工具組帳戶進行驗證。 它會使用 IntelliJ IDE 上的已登入使用者資訊,並用它來根據 Microsoft Entra ID 驗證應用程式。

登入 Azure Toolkit for IntelliJ for IntelliJCredential

使用下列步驟登入:

  1. 在 IntelliJ 視窗中,開啟 [檔案 > 設定 > 外掛程式]。
  2. 在市集中搜尋「適用於 IntelliJ 的 Azure 工具組」。 安裝並重新啟動 IDE。
  3. 尋找新的功能表項 [Azure > Azure 登入]>
  4. 裝置登入 可協助您以用戶帳戶身分登入。 請遵循指示,使用裝置程式代碼登入 login.microsoftonline.com 網站。 IntelliJ 會提示您選取您的訂用帳戶。 選取具有您想要存取之資源的訂用帳戶。

在 Windows 上,您也需要 KeePass 資料庫路徑來讀取 IntelliJ 認證。 您可以在 [檔案 > 設定 外觀與行為>系統 設定 >> 密碼] 底下的 IntelliJ 設定中找到路徑。 記下 KeePassDatabase 路徑的位置。

使用 IntelliJ IDEA 驗證用戶帳戶

下列範例示範如何在IntelliJCredential安裝 IntelliJ IDEA 的工作站上使用 ,從 azure-security-keyvault-secrets 用戶端連結庫驗證 SecretClient,且使用者已使用 Azure 帳戶登入。

IntelliJCredential intelliJCredential = new IntelliJCredentialBuilder()
  // KeePass configuration isrequired only for Windows. No configuration needed for Linux / Mac.
  .keePassDatabasePath("C:\\Users\\user\\AppData\\Roaming\\JetBrains\\IdeaIC2020.1\\c.kdbx")
  .build();

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

Visual Studio Code 認證

Visual Studio Code 認證可在使用 VS Code Azure 帳戶擴充功能安裝 VS Code 的開發環境中進行驗證。 它會使用 VS Code IDE 中的已登入使用者資訊,並用它來根據 Microsoft Entra ID 驗證應用程式。

登入 VisualStudioCodeCredential 的 Visual Studio Code Azure 帳戶延伸模組

Nn 與 Azure 帳戶擴充功能的 整合會處理 Visual Studio Code 驗證。 若要使用此形式的驗證,請安裝 Azure 帳戶擴充功能,然後使用 檢視 > 命令選擇區 來執行 Azure:登入 命令。 此命令會開啟瀏覽器視窗,並顯示可讓您登入 Azure 的頁面。 完成登入程式之後,您可以依指示關閉瀏覽器。 執行您的應用程式(在調試程式或開發電腦上的任何地方)會使用您登入的認證。

使用 Visual Studio Code 驗證使用者帳戶

下列範例示範在VisualStudioCodeCredential安裝Visual Studio Code 的工作站上使用 ,從 azure-security-keyvault-secrets 用戶端連結庫驗證 SecretClient ,且使用者已使用 Azure 帳戶登入。

VisualStudioCodeCredential visualStudioCodeCredential = new VisualStudioCodeCredentialBuilder().build();

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

下一步

本文涵蓋在開發期間使用計算機上可用的認證進行驗證。 這種形式的驗證是您可以在適用於 Java 的 Azure SDK 中驗證的多種方式之一。 下列文章說明其他方式:

如果您遇到開發環境驗證的相關問題,請參閱 針對開發環境驗證進行疑難解答。

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