Tylko z perspektywy Windows:
NTLM
- współpracuje zarówno z klientami zewnętrznymi (spoza domeny), jak i wewnętrznymi
- współpracuje zarówno z kontami domeny, jak i kontami użytkowników lokalnych w polu IIS
- przy użyciu kont domeny tylko serwer wymaga bezpośredniej łączności z kontrolerem domeny (DC)
- używając kont lokalnych nigdzie nie potrzebujesz łączności :)
- nie musisz być zalogowany jako dany użytkownik, aby użyć poświadczenia
- Bok : to nie tak, że często dla DC być przytłoczeni ciężkim serwerze NTLM (IIS, Exchange, TMG / ISA, etc) z tomu wniosków NTLM (aby złagodzić:
MaxConcurrentAPI
, AuthPersistSingleRequest
(fałsz) ., Szybciej DCS) ( Self premia referencyjna ).
- wymaga połączenia klienta tylko z serwerem IIS (na porcie witryny, nic więcej, tzn. wszystko dzieje się przez HTTP (lub HTTPS)).
- może przechodzić z serwera proxy nośną HTTP podtrzymania ów
- możesz być w stanie używać TLS / SSL do obejścia innych
- wymaga wielu uwierzytelnień w obie strony z małymi pakietami
- (wzór logu to 401,2, 401,1, 200 z nazwą użytkownika)
- nie może być stosowany w scenariuszach, w których wymagane jest uwierzytelnianie podwójnego skoku
- tzn. dane uwierzytelniające użytkownika mają być przekazywane do usługi na innym komputerze
- obsługuje starszych klientów (<Win2000)
- Jest podatny na rozbieżności poziomu autoryzacji LM (niedopasowane
lmcompatibilitylevel
)
- jest używany jako zapasowy przez pakiet Negotiate, jeśli Curb zawiedzie.
- ( nie „jeśli odmówiono dostępu z Curb”, Curb musi się zepsuć, aby można było użyć NTLM - zwykle wygląda to tak, jakby nie dostać biletu. Jeśli klient dostanie bilet i nie jest doskonały, nie spowoduje to cofnięcia się.)
Kerberos
- pracuje obecnie klientów przyłączonych do domeny tylko
- wymaga połączenia klienta z AD DC (tcp / udp 88) ORAZ serwerem (bilety są pobierane przez klienta z DC za pośrednictwem portu Curb, a następnie dostarczane do serwera za pomocą HTTP)
może być w stanie przejść przez proxy, ale patrz punkt DC powyżej: nadal musisz być w tej samej sieci co aktywny DC, podobnie jak serwer .
- więc teoretycznie, jeśli masz domenę, w której klienci podłączeni do Internetu czatują bezpośrednio z podłączonym do sieci DC, jest to wykonalne. Ale nie rób tego, chyba że już to wiedziałeś.
- W scenariuszach z odwrotnym proxy (ISA / TMG) serwer przejścia protokołu musi znajdować się w tej sieci, tj. Nie jest klientem ... ale wtedy klient nie jest tak naprawdę tym, który robi bit Kerberos (koniecznie - pomyśl Forms auth to Curb przejście).
bilet jest długowieczny (10 godzin), co oznacza mniej komunikacji DC w czasie jego trwania - i, aby podkreślić: może to zaoszczędzić tysiące do milionów żądań na klienta w tym czasie - ( AuthPersistNonNTLM
wciąż jest rzeczą; weryfikacja PAC Kerberos była kiedyś rzeczą)
- wymaga jednej podróży w obie strony w celu uwierzytelnienia, ale rozmiar ładunku uwierzytelniania jest stosunkowo duży (zwykle 6-16K) ( 401 , {(zakodowany) rozmiar tokena} 200 )
- można go używać z (proszę zawsze ograniczonym ) delegowaniem, aby umożliwić uwierzytelnianie systemu Windows użytkownika łączącego się z następną usługą
- na przykład, aby umożliwić
UserA
dostęp do IIS i używać tego samego konta użytkownika, gdy IIS uzyskuje dostęp do SQL Server, jest to „przekazanie uwierzytelnienia”.
- ( Ograniczone w tym kontekście oznacza „ale nic więcej”, np. Exchange lub inne okno SQL)
- jest obecnie podstawowym pakietem bezpieczeństwa do uwierzytelniania negocjacyjnego
- co oznacza, że członkowie domeny Windows wolą go, kiedy mogą go zdobyć
- wymaga rejestracji nazw SPN , co może być trudne. Zasady, które pomagają .
- wymaga użycia nazwy jako celu, a nie adresu IP
- powodów, dla których krawężnik może zawieść:
- używając adresu IP zamiast nazwy
- nie zarejestrowano nazwy SPN
- zarejestrowano zduplikowane nazwy SPN
- Nazwa SPN zarejestrowana na niewłaściwym koncie (
KRB_ERR_AP_MODIFIED
)
- brak połączenia DNS / DC klienta
- ustawienie proxy klienta / strefa lokalnego intranetu nieużywana dla witryny docelowej
Podczas gdy jesteśmy przy tym:
Podstawowy
- potrafi multi-hop. Ale robi to, ujawniając swoją nazwę użytkownika i hasło bezpośrednio w docelowej aplikacji internetowej
- które mogą zrobić z nimi wszystko, co zechce. Cokolwiek .
- „Och, czy administrator domeny właśnie użył mojej aplikacji? Czy właśnie przeczytałem ich e-mail? Potem zresetowałem hasło? A. Szkoda ”
- wymaga zabezpieczenia warstwy transportowej (tj. TLS / SSL) dla każdej formy bezpieczeństwa.
- a następnie zobacz poprzedni numer
- współpracuje z dowolną przeglądarką
- (ale patrz pierwszy numer )
- wymaga uwierzytelnienia w jedną stronę ( 401 , 200 )
- może być używany w scenariuszach z wieloma przeskokami, ponieważ system Windows może wykonywać interakcyjne logowanie przy użyciu podstawowych poświadczeń
- Aby to
LogonType
osiągnąć, może być konieczne skonfigurowanie (domyślnie zmieniono na zwykły tekst sieciowy między 2000 a 2003 r., Ale może być źle pamiętany)
- ale znowu , zobaczyć pierwszy numer .
- Masz wrażenie, że pierwszy numer jest naprawdę, naprawdę ważny? To jest.
Podsumowując:
Ograniczenie może być trudne do skonfigurowania, ale istnieje mnóstwo przewodników ( moich ), które próbują uprościć proces, a narzędzia znacznie się poprawiły od 2003 do 2008 roku ( SetSPN
mogą wyszukiwać duplikaty, co jest najczęstszym problemem łamania ; używaj,SETSPN -S
kiedy tylko zobaczysz wskazówki, jak używać -A, a życie będzie szczęśliwsze).
Ograniczona delegacja jest warta kosztów przyjęcia.
Innym podejściem byłoby ustawienie uwierzytelniania
negotiate
i używanie obu zamiast jednego zamiast drugiego.źródło
Od Microsoft Application Verifier , który wykrywa typowe błędy programistów. Jednym z tych błędów jest użycie NTLM :
źródło
Powinieneś dodać bardzo ważny punkt:
Kerberos jest standardowym i otwartym protokołem w Uniksie od ponad 20 lat, podczas gdy NTLM jest czysto zastrzeżonym rozwiązaniem firmy Microsoft i znanym tylko Microsoft.
źródło
Kerberos jest wymagany, jeśli musisz podszyć się pod użytkownika, aby uzyskać dostęp do zasobów, które nie znajdują się na serwerze iis.
źródło