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.

Robert Grant
źródło
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

użytkownik2320464
źródło
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,