Bei der Suche nach den Windows-Authentifizierungsmethoden und -protokollen habe ich entschieden, den genauen Unterschied zwischen Negotiate, Kerberos und NTLM, der in einer einfachen ausführbaren Datei verwendet wird, zu verstehen, bevor ich ihn mit IIS und der Web-Authentifizierung mag.
Ich habe gute Ergebnisse erreicht, ABER ich brauche noch mehr Details über die Negotiate und Kerberos.
Ich habe folgendes Szenario:
Ich habe sehr einfache C # Windows Forms-Anwendung erstellt, die ein Meldungsfeld zeigt den Wert für zeigt:
%Vor%Beachten Sie, dass ich ein Domänenbenutzer mit Administratorrechten auf meinem lokalen Computer bin. Ich habe folgende Ergebnisse:
Wenn ich die EXE-Datei (Doppelklick) ausführe, während ich aktiv mit dem DC verbunden bin, habe ich "Negotiate".
Wenn ich die exe-Datei ausführe (als diffenet user / local user), während ich aktiv mit dem DC verbunden bin, habe ich "NTLM".
Wenn ich die EXE-Datei mit "Als Administrator ausführen" oder "Als anderer Benutzer ausführen" starte, habe ich "Kerberos".
Wenn ich die EXE-Datei ausführe, während ich lokal mit einem lokalen Benutzerkonto angemeldet bin, habe ich "NTLM".
Ich verstehe, dass die LSA NTLM für lokale Konten verwendet. Außerdem verstehe ich, dass Active Directory Kerberos verwendet, um Domänenbenutzer und Computer zu authentifizieren.
Meine Frage ist, warum ich den Negotiate Authentifizierungstyp erhalte, wenn ich die exe mit meinem Konto entweder mit (Doppelklick) oder "als anderer Benutzer ausführen" unter Verwendung meines gleichen Kontos ausführe.
Update: Ich habe folgendes bemerkt:
- Wenn lokaler Benutzer die exe ausführt, ist NTLM
- Wenn Domänenbenutzer die exe ausführt, ist Aushandeln (Wenn dieser Benutzer der lokale Administrator ist), ist aber Kerberos (wenn dieser Benutzer dies nicht tut) lokaler Administrator)
- Wenn Domänenadministrator die exe ausführt, ist Kerberos
Ich habe nur eine Erklärung über dieses Verhalten.
Zunächst einmal (was Sie in der Frage zu verstehen scheinen, aber nur um klar zu sein): Eine EXE hat keine Authentifizierung - es ist nur eine ausführbare Datei. Das OS erstellt ein Prozessobjekt , das es ausführt innerhalb einer Anmeldesitzung, die von einem Prinzipal identifiziert wird. Es ist dieser Prinzipal, der von NTLM oder Kerberos (oder einem anderen Protokoll) authentifiziert wurde.
Als Nächstes bedeutet Negotiate, dass beim Erstellen der Anmeldesitzung die %code% . Dies meldet Details der Anmeldesitzung, die zum Ausführen des Prozesses verwendet wird, den Sie ausführen. Die Art und Weise, in der diese Anmeldesitzung erstellt wurde, hat wahrscheinlich die größte Auswirkung auf das Authentifizierungspaket, das zum Überprüfen der Anmeldeinformationen verwendet wird.
Wenn Sie sich das erste Mal bei Windows anmelden, baut Winlogon.exe ein interaktives Tool auf Anmeldung durch Aufruf von LsaLogonUser . Es fragt die Authentifizierungspakete in %code% der Reihe nach ab, bis eine gefunden wird, die die angegebenen Anmeldeinformationen authentifizieren kann. Sobald eine interaktive Anmeldung eingerichtet wurde, können Sie neue Prozesse mit nicht interaktiven Anmeldungen unter verschiedenen Anmeldeinformationen erstellen, und in diesem Fall %code% Funktion wird wahrscheinlich aufgerufen. Einer der Parameter für diese Funktion ist %code% , der den folgenden Standardwert hat (der wahrscheinlich derselbe ist):
%Vor%Das Paket, das für die Anmeldesitzung berichtet wird, in der der Prozess unter ausgeführt wird, hängt davon ab, wie die Anmeldesitzung erstellt wurde . (Es ist nicht klar aus Ihrer Frage genau, wie Sie die Anmeldesitzungen erstellen, die Sie testen ... tun "Ausführen als" in allen Fällen? Abmelden / Logon Windows in einigen Fällen?) Es hängt auch davon ab, welches Paket Winlogon konnte erfolgreich zuerst mit der interaktiven Anmeldesitzung authentifizieren. Beachten Sie jedoch, dass die Authentifizierungsmechanismen alle zu einem Authentifizierungspaket aufrufen, und wenn Negotiate verwendet wird, wird Kerberos bevorzugt, obwohl Negotiate das ist, was berichtet wird.
Hier ist ein altes, aber immer noch relevantes Diagramm, das zeigt, wie die gesamte Authentifizierung in Windows zusammenpasst: