2016-10-06 2 views
1

Ich frage mich, ob wir NTLM (Windows) -Authentifizierung verwenden - wie Server ermittelt, ob Benutzer bereits angemeldet ist oder nicht. Also, wenn ich zum ersten Mal Zugriff auf die Website - der Server mir sagt, er möchte mich über NTLM authentifizieren:NTLM-Authentifizierung über HTTP

WWW-Authenticate: Negotiate 
WWW-Authenticate: NTLM 

Dann Client und Server wenige Anfragen Austausch - tatsächlich/Antwort-Phase Herausforderung geschieht hier, vor allem Server und sendet Herausforderung Für den Client berechnet der Client die darauf basierende Antwort und sendet sie zurück. Anschließend kontaktiert der Server den Domänencontroller, um diesen zu überprüfen. Ok, wir sind fertig.

Aber wenn ich authentifiziert bin und zu irgendeiner Seite gehe, gibt es keine Authentifizierungsheader mehr. Woher weiß der Server, dass ich bereits authentifiziert bin?

P.S. Ich dachte, IIS bindet Client über MAC oder IP, aber das stimmt nicht. NTLM funktioniert für einen einzelnen Browser. Es wurden auch keine NTLM-spezifischen Cookies gefunden.

Antwort

1

NTLM über http verwendet HTTP persistent connection oder http keep-alive.

Eine einzelne Verbindung wird erstellt und dann für den Rest der Sitzung geöffnet.

Wenn dieselbe authentifizierte Verbindung verwendet wird, müssen die Authentifizierungsheader nicht mehr gesendet werden.

Dies ist auch der Grund, warum NTLM nicht mit bestimmten Proxy-Servern funktioniert, die Keep-Alive-Verbindungen nicht unterstützen.

+0

Danke, in der Tat habe ich nicht darüber nachgedacht. BTW - laut wikipedia 'Persistente Verbindungen Timeout nach 60 Sekunden Inaktivität, die über die Windows Registry änderbar ist.' Bedeutet das, dass der Browser alle 1-2 Minuten ein Kerberos-Ticket sendet? – seeker

+0

Ich weiß nicht wirklich die Details der Implementierung, ich denke, die Anmeldeinformationen sind im Browser zwischengespeichert und können bei Bedarf erneut gesendet werden. Sie können sich den Netzwerkverkehr ansehen, um das herauszufinden. –