Problemy z uwierzytelnianiem w usłudze Azure HDInsight
W tym artykule opisano kroki rozwiązywania problemów i możliwe rozwiązania problemów podczas interakcji z klastrami usługi Azure HDInsight.
W bezpiecznych klastrach wspieranych przez usługę Azure Data Lake Gen2, gdy użytkownicy domeny logujący się do usług klastra za pośrednictwem bramy HDI (na przykład logując się do portalu Apache Ambari), usługa HDI Gateway próbuje najpierw uzyskać token OAuth z usługi Microsoft Entra, a następnie uzyskać bilet Protokołu Kerberos z usług Microsoft Entra Domain Services. Uwierzytelnianie może zakończyć się niepowodzeniem w jednym z tych etapów. Ten artykuł ma na celu debugowanie niektórych z tych problemów.
Gdy uwierzytelnianie zakończy się niepowodzeniem, zostanie wyświetlony monit o podanie poświadczeń. Jeśli anulujesz to okno dialogowe, zostanie wyświetlony komunikat o błędzie. Oto niektóre typowe komunikaty o błędach:
invalid_grant lub unauthorized_client, 50126
Problem
Logowanie kończy się niepowodzeniem dla użytkowników federacyjnych z kodem błędu 50126 (logowanie powiedzie się dla użytkowników chmury). Komunikat o błędzie jest podobny do następującego:
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"}
Przyczyna
Kod błędu 50126 firmy Microsoft oznacza, AllowCloudPasswordValidation
że zasady nie są ustawiane przez dzierżawę.
Rozwiązanie
Administrator dzierżawy microsoft Entra powinien włączyć identyfikator Entra firmy Microsoft, aby używać skrótów haseł dla użytkowników wspieranych przez usługę ADFS. Zastosuj element AllowCloudPasswordValidationPolicy
, jak pokazano w artykule Use Enterprise Security Package in HDInsight (Używanie pakietu Enterprise Security w usłudze HDInsight).
invalid_grant lub unauthorized_client, 50034
Problem
Logowanie kończy się niepowodzeniem z kodem błędu 50034. Komunikat o błędzie jest podobny do następującego:
{"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"}
Przyczyna
Nazwa użytkownika jest nieprawidłowa (nie istnieje). Użytkownik nie używa tej samej nazwy użytkownika, która jest używana w witrynie Azure Portal.
Rozwiązanie
Użyj tej samej nazwy użytkownika, która działa w tym portalu.
invalid_grant lub unauthorized_client, 50053
Problem
Konto użytkownika jest zablokowane, kod błędu 50053. Komunikat o błędzie jest podobny do następującego:
{"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"}
Przyczyna
Zbyt wiele prób logowania przy użyciu nieprawidłowego hasła.
Rozwiązanie
Poczekaj 30 minut lub tak, zatrzymaj wszystkie aplikacje, które mogą próbować się uwierzytelnić.
invalid_grant lub unauthorized_client, 50053 (#2)
Problem
Hasło wygasło, kod błędu 50053. Komunikat o błędzie jest podobny do następującego:
{"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"}
Przyczyna
Hasło wygasło.
Rozwiązanie
Zmień hasło w witrynie Azure Portal (w systemie lokalnym), a następnie poczekaj 30 minut na synchronizację, aby nadrobić zaległości.
interaction_required
Problem
Otrzymuj komunikat interaction_required
o błędzie .
Przyczyna
Zasady dostępu warunkowego lub uwierzytelniania wieloskładnikowego są stosowane do użytkownika. Ponieważ uwierzytelnianie interakcyjne nie jest jeszcze obsługiwane, użytkownik lub klaster musi być wykluczony z uwierzytelniania wieloskładnikowego/dostępu warunkowego. Jeśli zdecydujesz się wykluczyć klaster (zasady wykluczania oparte na adresach IP), upewnij się, że usługa AD ServiceEndpoints
jest włączona dla tej sieci wirtualnej.
Rozwiązanie
Użyj zasad dostępu warunkowego i wyklucz klastry usługi HDInsight z uwierzytelniania wieloskładnikowego, jak pokazano w temacie Konfigurowanie klastra usługi HDInsight z pakietem Enterprise Security przy użyciu usług Microsoft Entra Domain Services.
Odmowa logowania
Problem
Odmowa logowania.
Przyczyna
Aby przejść do tego etapu, uwierzytelnianie OAuth nie jest problemem, ale uwierzytelnianie Kerberos jest. Jeśli ten klaster jest wspierany przez usługę ADLS, logowanie OAuth powiodło się przed podjęciem próby uwierzytelnienia protokołu Kerberos. W klastrach WASB logowanie OAuth nie jest podejmowane. Przyczyną niepowodzenia protokołu Kerberos może być wiele przyczyn — na przykład skróty haseł nie są zsynchronizowane, konto użytkownika zablokowane w usługach Microsoft Entra Domain Services itd. Skróty haseł są synchronizowane tylko wtedy, gdy użytkownik zmieni hasło. Podczas tworzenia wystąpienia usług Microsoft Entra Domain Services rozpocznie się synchronizowanie haseł, które zostaną zmienione po utworzeniu. Nie może on z mocą wsteczną synchronizować haseł ustawionych przed ich utworzeniem.
Rozwiązanie
Jeśli uważasz, że hasła mogą nie być zsynchronizowane, spróbuj zmienić hasło i poczekać kilka minut na synchronizację.
Spróbuj użyć protokołu SSH do elementu Musisz spróbować uwierzytelnić (kinit) przy użyciu tych samych poświadczeń użytkownika z komputera przyłączonego do domeny. Połączenie SSH z węzłem głównym/krawędzi za pomocą użytkownika lokalnego, a następnie uruchom narzędzie kinit.
Niepowodzenie interfejsu Kinit
Problem
Kinit kończy się niepowodzeniem.
Przyczyna
Różni się.
Rozwiązanie
Aby kinit zakończył się powodzeniem, musisz znać swoją sAMAccountName
(jest to krótka nazwa konta bez obszaru). sAMAccountName
to zazwyczaj prefiks konta (na przykład bob w bob@contoso.com
pliku ). Dla niektórych użytkowników może to być inne. Musisz mieć możliwość przeglądania/przeszukiwania katalogu, aby dowiedzieć się, jak go sAMAccountName
poznać.
Sposoby znajdowania sAMAccountName
:
Jeśli możesz zalogować się do systemu Ambari przy użyciu lokalnego administratora systemu Ambari, zapoznaj się z listą użytkowników.
Jeśli masz maszynę z systemem Windows przyłączonym do domeny, możesz użyć standardowych narzędzi usługi Windows AD do przeglądania. Wymaga to konta roboczego w domenie.
Z węzła głównego można wyszukiwać za pomocą poleceń SAMBA. Wymaga to prawidłowej sesji protokołu Kerberos (pomyślnej sesji kinit). wyszukiwanie reklam net "(userPrincipalName=bob*)"
Wyniki wyszukiwania/przeglądania
sAMAccountName
powinny zawierać atrybut . Ponadto możesz przyjrzeć się innym atrybutom, nppwdLastSet
. ,badPasswordTime
userPrincipalName
itp., aby sprawdzić, czy te właściwości są zgodne z oczekiwaną wartością.
Niepowodzenie interfejsu Kinit z niepowodzeniem uwierzytelniania wstępnego
Problem
Kinit kończy się niepowodzeniem z Preauthentication
powodu błędu.
Przyczyna
Nieprawidłowa nazwa użytkownika lub hasło.
Rozwiązanie
Sprawdź nazwę użytkownika i hasło. Sprawdź również inne opisane właściwości. Aby włączyć pełne debugowanie, uruchom polecenie export KRB5_TRACE=/tmp/krb.log
z sesji przed podjęciem próby kinit.
Polecenie Job/HDFS kończy się niepowodzeniem z powodu błędu TokenNotFoundException
Problem
Polecenie Job/HDFS kończy się niepowodzeniem z powodu .TokenNotFoundException
Przyczyna
Nie można odnaleźć wymaganego tokenu dostępu OAuth dla zadania/polecenia, aby zakończyć się powodzeniem. Sterownik ADLS/ABFS próbuje pobrać token dostępu OAuth z usługi poświadczeń przed wykonaniem żądań magazynu. Ten token jest rejestrowany podczas logowania się do portalu Ambari przy użyciu tego samego użytkownika.
Rozwiązanie
Upewnij się, że pomyślnie zalogowano się do portalu Ambari raz za pomocą nazwy użytkownika, której tożsamość jest używana do uruchamiania zadania.
Błąd podczas pobierania tokenu dostępu
Problem
Użytkownik otrzymuje komunikat Error fetching access token
o błędzie .
Przyczyna
Ten błąd występuje sporadycznie, gdy użytkownicy próbują uzyskać dostęp do usługi ADLS Gen2 przy użyciu list ACL i tokenu Kerberos wygasł.
Rozwiązanie
W przypadku usługi Azure Data Lake Storage Gen1 wyczyść pamięć podręczną przeglądarki i ponownie zaloguj się do systemu Ambari.
W przypadku usługi Azure Data Lake Storage Gen2 uruchom
/usr/lib/hdinsight-common/scripts/RegisterKerbTicketAndOAuth.sh <upn>
użytkownika, który próbuje się zalogować jako
Następne kroki
Jeśli problem nie został wyświetlony lub nie możesz go rozwiązać, odwiedź jeden z następujących kanałów, aby uzyskać więcej pomocy technicznej:
Uzyskaj odpowiedzi od ekspertów platformy Azure za pośrednictwem pomocy technicznej społeczności platformy Azure.
Nawiąż połączenie z @AzureSupport — oficjalnym kontem platformy Microsoft Azure, aby ulepszyć środowisko klienta. Łączenie społeczności platformy Azure z odpowiednimi zasobami: odpowiedziami, pomocą techniczną i ekspertami.
Jeśli potrzebujesz dodatkowej pomocy, możesz przesłać wniosek o pomoc techniczną w witrynie Azure Portal. Wybierz pozycję Pomoc techniczna na pasku menu lub otwórz centrum Pomoc i obsługa techniczna . Aby uzyskać bardziej szczegółowe informacje, zobacz How to create an pomoc techniczna platformy Azure request (Jak utworzyć żądanie pomoc techniczna platformy Azure). Dostęp do pomocy technicznej dotyczącej zarządzania subskrypcjami i rozliczeniami jest oferowany w ramach subskrypcji platformy Microsoft Azure, a pomoc techniczna jest świadczona w ramach jednego z planów pomocy technicznej platformy Azure.