使用使用者認證進行 Azure 驗證
本文探討 Azure 身分識別連結庫如何透過使用者提供的認證支援Microsoft Entra 令牌驗證。 此支援可透過本文所討論的一組 TokenCredential 實作來提供。
本文涵蓋下列主題:
如需針對使用者認證驗證問題進行疑難解答,請參閱 針對使用者認證驗證進行疑難解答。
裝置程式代碼認證
裝置程式代碼認證會以互動方式驗證具有有限 UI 的裝置上的使用者。 其運作方式是提示使用者在應用程式嘗試驗證時,流覽已啟用瀏覽器之電腦上的登入URL。 然後,用戶會輸入指示中提及的裝置程序代碼,以及其登入認證。 成功驗證時,要求驗證的應用程式會在執行時成功在裝置上進行驗證。
如需詳細資訊,請參閱 Microsoft 身分識別平台和 OAuth 2.0 裝置授權授與流程。
啟用裝置程式代碼流程的應用程式
若要透過裝置程式代碼流程驗證使用者,請使用下列步驟:
- 移至 Azure 入口網站 中的 Microsoft Entra 識別碼,然後尋找您的應用程式註冊。
- 流覽至 [ 驗證] 區段。
- 在 [建議的重新導向 URI] 下,檢查以 結尾的
/common/oauth2/nativeclient
URI。 - 在[預設客戶端類型] 底下,針對
Treat application as a public client
選取yes
。
這些步驟可讓應用程式進行驗證,但仍沒有許可權將您登入Microsoft Entra ID,或代表您存取資源。 若要解決此問題,請流覽至 [API 許可權],然後啟用 Microsoft Graph 和您想要存取的資源,例如 金鑰保存庫。
當您第一次登入時,您也必須是租用戶的系統管理員,才能授與應用程式同意。
如果您無法在Microsoft Entra ID 上設定裝置程式代碼流程選項,則可能需要您的應用程式成為多租使用者。 若要讓應用程式成為多租使用者,請流覽至 [驗證 ] 面板,然後選取 [任何組織目錄中的帳戶]。 然後,針對 [將應用程式視為公用用戶端] 選取 [是]。
使用裝置程式代碼流程驗證用戶帳戶
下列範例示範如何使用 DeviceCodeCredential
IoT 裝置上的 ,從適用於 Java 的 Azure 金鑰保存庫 秘密客戶端連結庫驗證 SecretClient
。
/**
* Authenticate with device code credential.
*/
DeviceCodeCredential deviceCodeCredential = new DeviceCodeCredentialBuilder()
.challengeConsumer(challenge -> {
// Lets the user know about 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
/**
* Authenticate interactively in the browser.
*/
InteractiveBrowserCredential interactiveBrowserCredential = new InteractiveBrowserCredentialBuilder()
.clientId("<your app client ID>")
.redirectUrl("YOUR_APP_REGISTERED_REDIRECT_URL")
.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();
用戶名稱密碼認證
有助於 UsernamePasswordCredential
使用不需要多重要素驗證的使用者認證來驗證公用用戶端應用程式。 下列範例示範如何使用 從 azure-security-keyvault-secrets 用戶端連結庫驗證 。SecretClient
UsernamePasswordCredential
使用者不得開啟多重要素驗證。
/**
* Authenticate with username, password.
*/
UsernamePasswordCredential usernamePasswordCredential = new UsernamePasswordCredentialBuilder()
.clientId("<your app client ID>")
.username("<your username>")
.password("<your password>")
.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(usernamePasswordCredential)
.buildClient();
如需詳細資訊,請參閱 Microsoft 身分識別平台 和 OAuth 2.0 資源擁有者密碼認證。
下一步
本文涵蓋使用使用者認證進行驗證。 這種形式的驗證是您可以在適用於 Java 的 Azure SDK 中驗證的多種方式之一。 下列文章說明其他方式:
如果您遇到與使用者認證驗證相關的問題,請參閱 針對使用者認證驗證進行疑難解答。
掌握驗證之後,請參閱 在 Azure SDK for Java 中設定記錄,以取得 SDK 所提供的記錄功能相關信息。