Czy taka konfiguracja Kerberos / AD jest możliwa?


10

Mamy nieco skomplikowaną konfigurację IDAM:

wprowadź opis zdjęcia tutaj

Oznacza to, że komputer i przeglądarka użytkownika końcowego siedzą w jednej sieci z nadrzędnym AD, a nasza aplikacja oparta na Jetty i AD, z którymi może rozmawiać (lokalna AD), siedzą w drugiej.

Między tymi dwiema reklamami istnieje dwukierunkowe zaufanie. Przeglądarka w sieci nadrzędnej ma domenę lokalną w zaufanych witrynach.

Konfiguracja serwera Jetty jest następująca:

  • wykorzystuje plik tabeli kluczy wygenerowany dla nazwy użytkownika w lokalnej usłudze AD
  • działa jako usługa systemu Windows w ramach użytkownika zdefiniowanego w lokalnej usłudze AD
  • dziedzina, odwzorowanie dziedziny domeny i kdc są zdefiniowane względem domeny lokalnego AD
  • używa spnego - isInitiator ma ustawioną wartość false; doNotPrompt jest prawdą; storeKey jest prawdą

Problemem jest:

  • jako test, dostęp do serwera z poziomu przeglądarki wewnątrz sieci lokalnej (czyli związane z miejscowym AZS) działa - Kerberos informacji debugowania pojawia się w dziennikach, widzę poprawną negocjację Kerberos w ruchu HTTP, a użytkownik jest zalogowany automatycznie . Znakomity.
  • jednak dostęp do serwera z przeglądarki w sieci macierzystej (tak robią nasi użytkownicy) nie działa! Przeglądarka odbiera nieautoryzowany komunikat 401, ale następnie wyświetla monit o podanie poświadczeń, które po wprowadzeniu powodują wyświetlenie pustego ekranu. Następnie kliknięcie w pasek adresu i naciśnięcie klawisza Enter powoduje jedną z dwóch rzeczy, w zależności od tego, czy dane uwierzytelniające dotyczą zdalnego czy lokalnego AD:

    • lokalne poświadczenia AD następnie logują się poprawnie, Kerberos od zera w logach (żądanie GET, odpowiedź 401 nieautoryzowana, żądanie nagłówków Kerberos itp.)
    • zdalne poświadczenia AD nie zalogować (żądanie GET, 401 UNAUTH odpowiedź, co wygląda nagłówka NTLM: Authorization: Negotiate <60 or so random chars>)

Tak czy inaczej, fakt, że to podpowiada, jest zły!

Czy istnieje wyjaśnienie tych objawów? Czy konfiguracja, którą mamy, robi to, co chcemy?

Pod względem tego, co w powyższym opisie może być błędne: każda konfiguracja, o której wspomniałem w odniesieniu do serwera Jetty, powinna być dokładna, tak jak to zrobiłem. Z przyjemnością podam więcej szczegółów. Każda konfiguracja dotycząca AD lub przeglądarki sieci nadrzędnej jest potencjalnie podejrzana, ponieważ nie jest pod moją kontrolą, a konfiguracja została mi zgłoszona, a nie sama.


czy protokół TCP / 88 jest otwarty między przeglądarką dla serwerów wymienionych w wynikach dns dla _kerberos._tcp.OurITOrgDomain i _kerberos._tcp.partentdomain? czy możesz korzystać z „przeglądarki” komputera za pomocą poświadczeń, które musisz uwierzytelnić na serwerze Jetty?
— Jacob Evans

roguelynn.com/words/explain-like-im-5-kerberos może rzucić nieco światła na to, w jaki sposób zapora może powodować problemy (ponownie, 88 do obu dcs od twojego klienta)
— Jacob Evans

Istnieje zbyt wiele zmiennych, aby uzyskać szczegółowe wyjaśnienie krok po kroku bez przechwytywania sieci. Następnie szybko sprawdzisz, czy nazwy SPN są poprawnie skonfigurowane, czy też przeglądarkę należy skonfigurować w celu cichego uwierzytelnienia.
— user2320464,

Odpowiedzi:


3

Nie widząc przechwytywania pakietów, przypuszczam, że SPN HTTP / www.website.com musi być zarejestrowany na koncie, na którym działa aplikacja. Zespół Microsoft Directory Services ma świetny, wieloczęściowy post na ten temat pod następującym adresem URL.

https://blogs.technet.microsoft.com/askds/2008/05/29/kerberos-authentication-problems-service-principal-name-spn-issues-part-1/

Uruchom przechwytywanie pakietów (netmon, wireshark) od klienta w każdym środowisku, aby określić, co SPN jest sprawdzane. Po ustaleniu tego użyj setspn cmd, aby zarejestrować go na koncie, na którym działa aplikacja.

FWIW, Kerberos działa tylko w sieci LAN. Jeśli ktoś potrzebuje dostępu tam, gdzie kontrolery domeny nie są dostępne, warto rozważyć logowanie jednokrotne, takie jak Shibboleth lub ADFS.

EDYCJA: jak wspomniano w @ alex-h , przeglądarki będą musiały zostać skonfigurowane do cichego uwierzytelniania za pośrednictwem Kerberos.

  • Internet Explorer - chociaż artykuł TechNet nie jest specjalnie dla Twojej aplikacji, kroki są takie same.
  • Firefox - to samo co łącze IE, niedokładne dopasowanie, ale kroki są takie same.

Wreszcie jest to powszechny problem z wdrożeniami Microsoft Sharepoint. Chcą, aby logowanie jednokrotne za pośrednictwem protokołu Kerberos odbywało się po cichu po uwierzytelnieniu użytkowników w domenie. Dlatego jeśli powyższe odpowiedzi nie rozwiązują problemu, spróbuj sprawdzić ich fora, takie jak:

Kerberos w Chrome, Safari lub FireFox


Dobra odpowiedź, lepsza niż moja!
— Alex H

Dzięki wam obojgu - zajmie mi kilka dni, aby przeczytać powiązane dokumenty, ale nie porzuciłem pytania ani nic!
— Robert Grant,

Tak, właściwie to nie było tak, ale myślę, że najlepiej jest zaakceptować tę odpowiedź, ponieważ prawdziwa to bardzo niezwykły przypadek, który dodam jako osobną odpowiedź. Dziękuję Ci bardzo!
— Robert Grant,

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.