共用方式為


Azure HDInsight 中的驗證問題

本文說明與 Azure HDInsight 叢集互動時若遇到問題,可使用哪些疑難排解步驟和可能的解決方案。

在 Azure Data Lake Gen2 所支援的安全叢集上,當網域使用者透過 HDI 閘道登入叢集服務時 (例如登入 Apache Ambari 入口網站),HDI 閘道會先嘗試從 Microsoft Entra 取得 OAuth 權杖,然後從 Microsoft Entra Domain Services 取得 Kerberos 票證。 驗證可能在這些階段的任一階段中失敗。 本文旨在偵錯其中一些問題。

驗證失敗時,系統會提示您輸入認證。 如果您取消此對話方塊,則會顯示錯誤訊息。 以下是一些常見的錯誤訊息:

invalid_grant 或 unauthorized_client,50126

問題

同盟使用者登入失敗,出現錯誤碼 50126 (雲端使用者登入成功)。 錯誤訊息類似:

Reason: Bad Request, Detailed Response: {"error":"invalid_grant","error_description":"AADSTS70002: Error validating credentials. AADSTS50126: Invalid username or password\r\nTrace ID: 0000aaaa-11bb-cccc-dd22-eeeeee333333\r\n Correlation ID: aaaa0000-bb11-2222-33cc-444444dddddd\r\nTimestamp: 2019-01-28 17:49:58Z","error_codes":[70002,50126], "timestamp":"2019-01-28 17:49:58Z","trace_id":"0000aaaa-11bb-cccc-dd22-eeeeee333333","correlation_id":"aaaa0000-bb11-2222-33cc-444444dddddd"}

原因

Microsoft Entra 錯誤碼 50126 表示租用戶未設定 AllowCloudPasswordValidation 原則。

解決方法

Microsoft Entra 租用戶的管理員應該讓 Microsoft Entra ID 針對 ADFS 支援的使用者使用密碼雜湊。 如在 HDInsight 中使用企業安全性套件一文所示套用 AllowCloudPasswordValidationPolicy


invalid_grant 或 unauthorized_client,50034

問題

登入失敗,出現錯誤碼 50034。 錯誤訊息類似:

{"error":"invalid_grant","error_description":"AADSTS50034: The user account Microsoft.AzureAD.Telemetry.Diagnostics.PII doesn't exist in the 0c349e3f-1ac3-4610-8599-9db831cbaf62 directory. To sign into this application, the account must be added to the directory.\r\nTrace ID: 2222cccc-33dd-eeee-ff44-aaaaaa555555\r\nCorrelation ID: cccc2222-dd33-4444-55ee-666666ffffff\r\nTimestamp: 2019-04-29 15:52:16Z", "error_codes":[50034],"timestamp":"2019-04-29 15:52:16Z","trace_id":"2222cccc-33dd-eeee-ff44-aaaaaa555555", "correlation_id":"cccc2222-dd33-4444-55ee-666666ffffff"}

原因

使用者名稱不正確 (不存在)。 使用者未使用在 Azure 入口網站中使用的相同使用者名稱。

解決方法

使用在該入口網站中運作的相同使用者名稱。


invalid_grant 或 unauthorized_client,50053

問題

使用者帳戶已鎖定,錯誤碼 50053。 錯誤訊息類似:

{"error":"unauthorized_client","error_description":"AADSTS50053: You've tried to sign in too many times with an incorrect user ID or password.\r\nTrace ID: 00aa00aa-bb11-cc22-dd33-44ee44ee44ee\r\nCorrelation ID: 11bb11bb-cc22-dd33-ee44-55ff55ff55ff\r\nTimestamp: 2019-06-06 09:47:23Z","error_codes":[50053],"timestamp":"2019-06-06 09:47:23Z","trace_id":"aaaa0000-bb11-2222-33cc-444444dddddd","correlation_id":"aaaa0000-bb11-2222-33cc-444444dddddd"}

原因

使用不正確的密碼嘗試登入太多次。

解決方法

等候大約 30 分鐘,停止任何可能嘗試進行驗證的任何應用程式。


invalid_grant 或 unauthorized_client,50053 (#2)

問題

密碼已過期,錯誤碼 50053。 錯誤訊息類似:

{"error":"user_password_expired","error_description":"AADSTS50055: Password is expired.\r\nTrace ID: 6666aaaa-77bb-cccc-dd88-eeeeee999999\r\nCorrelation ID: eeee4444-ff55-6666-77aa-888888bbbbbb\r\nTimestamp: 2019-06-06 17:29:37Z","error_codes":[50055],"timestamp":"2019-06-06 17:29:37Z","trace_id":"6666aaaa-77bb-cccc-dd88-eeeeee999999","correlation_id":"eeee4444-ff55-6666-77aa-888888bbbbbb","suberror":"user_password_expired","password_change_url":"https://portal.microsoftonline.com/ChangePassword.aspx"}

原因

密碼已過期。

解決方法

在 Azure 入口網站中變更密碼 (內部部署系統上),然後等候 30 分鐘讓同步趕上。


interaction_required

問題

收到錯誤訊息 interaction_required

原因

使用者套用了條件式存取原則或 MFA。 由於尚不支援互動式驗證,因此使用者或叢集必須從 MFA/條件式存取中免除。 如果您選擇豁免該叢集 (以 IP 位址為基礎的豁免原則),則請確定已針對該 VNet 啟用 AD ServiceEndpoints

解決方法

使用條件式存取原則並將 HDInisght 叢集從 MFA 中豁免,如使用 Microsoft Entra Domain Services 設定具有企業安全性套件的 HDInsight 叢集所示。


登入遭拒

問題

登入遭拒。

原因

若要到達此階段,您的 OAuth 驗證不是問題,但 Kerberos 驗證是問題。 如果此叢集是由 ADLS 支援,則嘗試 Kerberos 驗證之前,OAuth 登入已成功。 在 WASB 叢集上,不會嘗試 OAuth 登入。 Kerberos 失敗的原因有很多,例如密碼雜湊不同步、使用者帳戶在 Microsoft Entra Domain Services 中遭到鎖定等等。 密碼雜湊只會在使用者變更密碼時同步。 建立 Microsoft Entra Domain Services 執行個體時,其會開始同步在建立之後變更的密碼。 其無法回溯同步在開始之前設定的密碼。

解決方法

如果您認為密碼可能不同步,請嘗試變更密碼,並等候幾分鐘的時間來同步。

嘗試透過 SSH 連接。您必須嘗試從已加入網域的電腦,使用相同使用者認證來驗證 (kinit)。 使用本機使用者透過 SSH 連接至前端/邊緣節點,然後執行 kinit。


kinit 失敗

問題

Kinit 失敗。

原因

變動。

解決方法

若要讓 kinit 成功,您必須知道您的 sAMAccountName (這是簡短帳戶名稱,沒有領域)。 sAMAccountName 通常是帳戶前置詞 (例如 bob@contoso.com 中的 bob)。 對於某些使用者而言,可能會不同。 您必須能夠瀏覽/搜尋目錄,才能知道您的 sAMAccountName

尋找 sAMAccountName 的方法:

  • 如果您可以使用本機 Ambari 系統管理員登入 Ambari,查看使用者的清單。

  • 如果您有已加入網域的 Windows 電腦,則可以使用標準 Windows AD 工具來瀏覽。 這需要網域中的工作帳戶。

  • 從前端節點,您可以使用 SAMBA 命令來搜尋。 這需要有效的 Kerberos 工作階段 (成功的 kinit)。 net ads search "(userPrincipalName=bob*)"

    搜尋/瀏覽結果應該會顯示 sAMAccountName 屬性。 此外,您也可以查看其他屬性,例如 pwdLastSetbadPasswordTimeuserPrincipalName 等等,以查看這些屬性是否符合您的預期。


kinit 失敗並且出現預先驗證失敗

問題

Kinit 失敗並且 Preauthentication 失敗。

原因

使用者名稱或密碼不正確。

解決方法

檢查您的使用者名稱和密碼。 另請檢查所述的其他屬性。 若要啟用詳細資訊偵錯,請先從工作階段執行 export KRB5_TRACE=/tmp/krb.log,然後再嘗試 kinit。


作業/HDFS 命令因 TokenNotFoundException 而失敗

問題

作業/HDFS 命令因 TokenNotFoundException 而失敗。

原因

找不到作業/命令成功所需的 OAuth 存取權杖。 ADLS/ABFS 驅動程式會先嘗試從認證服務擷取 OAuth 存取權杖,再提出儲存要求。 使用相同使用者登入 Ambari 入口網站時,就會註冊此權杖。

解決方法

確保您已成功透過身分識別用來執行作業的使用者名稱登入 Ambari 入口網站一次。


擷取存取權杖時發生錯誤

問題

使用者收到錯誤訊息 Error fetching access token

原因

使用者嘗試使用 ACL 存取 ADLS Gen2 時間歇性地發生此錯誤,並且 Kerberos 權杖已到期。

解決方法

  • 若為 Azure Data Lake Storage Gen1,請清除瀏覽器快取,然後再次登入 Ambari。

  • 若為 Azure Data Lake Storage Gen2,請針對嘗試登入的使用者執行 /usr/lib/hdinsight-common/scripts/RegisterKerbTicketAndOAuth.sh <upn>


下一步

如果您沒有看到您的問題,或無法解決您的問題,請瀏覽下列其中一個管道以取得更多支援:

  • 透過 Azure 社群支援獲得由 Azure 專家所提供的解答。

  • 連線至 @AzureSupport,這是用來改善客戶體驗的官方 Microsoft Azure 帳戶。 將 Azure 社群連線到正確的資源:解答、支援和專家。

  • 如果需要更多協助,您可在 Azure 入口網站提交支援要求。 從功能表列中選取 [支援] 或開啟 [說明 + 支援] 中樞。 如需詳細資訊,請參閱如何建立 Azure 支援要求。 Microsoft Azure 訂用帳戶包括訂用帳戶管理及帳務支援的存取權,而技術支援由其中一項 Azure 支援方案提供。