共用方式為


Java 開發環境中的 Azure 驗證

本文提供 Azure 身分識別連結庫支援Microsoft Entra 令牌驗證的概觀。 這項支援可透過一組 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 用戶端連結庫驗證 。SecretClient InteractiveBrowserCredential

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 會提示您選取您的訂用帳戶。 選取具有您想要存取之資源的訂用帳戶。

使用 IntelliJ IDEA 驗證用戶帳戶

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

IntelliJCredential intelliJCredential = new IntelliJCredentialBuilder()
  .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();

下一步

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

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

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