Wie kann ich überprüfen, ob meine IIS-Site NTLM oder Kerberos verwendet?

Wie kann ich überprüfen, ob meine IIS-Site NTLM oder Kerberos verwendet?

Wie kann ich überprüfen, ob meine IIS-Site NTLM oder Kerberos verwendet? Und wie kann ich die Authentifizierung von Kerberos auf NTLM ändern? Ich verwende IIS 7.5.

Antwort1

Aus:

Ermitteln, ob die HTTP-Authentifizierung NTLM oder Kerberos ist
http://support.microsoft.com/kb/891032

[...] „Da wir diese Ablaufverfolgung überprüfen, um zu sehen, ob der Client Authentifizierungsinformationen sendet, können wir die TCP-Segmente verwenden, um die HTTP-GET-Anfragen und die Antwort vom Server zu verfolgen. Hier ist ein Ausschnitt aus dem Frame, der Authentifizierungsinformationen vom Client sendet:

23 4294967263.4294641621 LOCAL 00045A420DBC HTTP GET Request (from client using port 3135) 192.168.0.2 192.168.0.4 IP 
HTTP: GET Request (from client using port 3135)
  HTTP: Request Method = GET
  HTTP: Uniform Resource Identifier = /webapplication1/webform1.aspx
  HTTP: Protocol Version = HTTP/1.1
  HTTP: Accept = image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.
  HTTP: Accept-Language = en-us
  HTTP: Accept-Encoding = gzip, deflate
  HTTP: User-Agent = Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 
  HTTP: Host = alien
  HTTP: Connection = Keep-Alive
  HTTP: Authorization = Negotiate TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAFASgKAAAA
44 77 3D 3D 0D 0A 0D 0A         AAADw==....   

„Was sagt uns das? Wir können sehen, dass der Autorisierungsheader auf „Verhandeln“ eingestellt ist, und wir können eine lange Zeichenfolge sehen, die in diesem Header gesendet wird. Diese Antwort sagt uns, dass der Client und der Server eine NTLM-Verbindung aushandeln.Wir wissen, dass hier NTLM-Authentifizierung verwendet wird, da das erste Zeichen ein „T“ ist. Wenn es ein „Y“ wäre, wäre es Kerberos. Der Header ist auf „Negotiate“ statt „NTLM“ eingestellt. Das bedeutet nicht, dass Kerberos oder NTLM verwendet wird, sondern dass die Autorisierungsmethode „ausgehandelt“ und Kerberos zuerst ausprobiert wird, wenn dies möglich ist. Wenn Kerberos nicht verwendet werden kann, wird NTLM verwendet.“

// if it is Negotiate...
if (String.Compare(Request.ServerVariables["HTTP_AUTHORIZATION"].Substring(10, 1), "Y", true) == 0)
{
    // we are using Kerberos
}
else
{
   // we are using NTLM
}

Antwort2

Wenn Sie Zugriff auf Ihren IIS-Server haben, ist die Antwort viel einfacher als die Überprüfung des HTTP-Verkehrs: Zeigen Sie einfach die Konfiguration des Site-Authentifizierungsmoduls für die Windows-Authentifizierung an.

  1. Im IIS-Manager
  2. Wählen Sie Ihre Site aus
  3. Klicken Sie auf das Authentifizierungsmodul
  4. Wählen Sie Windows-Authentifizierung
  5. Anbieter auswählen...

IIS Manager > Site > Authentifizierungsmodul > Anbieter

Antwort3

verwenden Sie den folgenden Code auf der HTML-/ASP-Seite:

<%
    authType=UCase(Request.ServerVariables("AUTH_TYPE"))
    authHeader=Request.ServerVariables("HTTP_AUTHORIZATION")
    response.write " Authentication Method : " & authType & "<BR>"
    LenAuthHeader = len(authHeader)
    response.write " Protocol : "
    if Len(authType ) =0 then response.write " Anonymous" else if authType<>"NEGOTIATE" then response.write authType else if LenAuthHeader>1000 then response.write "Kerberos" else response.write "NTLM"
%> 

Antwort4

Diese Antwort ist nicht ganz vollständig. Es gibt zwei Möglichkeiten, wie die Verbindung NTLM verwenden kann. Eine davon ist über die WWW-Authentifizierungsmethode „NTLM“; die andere ist über Negotiate. Negotiate verwendet GSSAPI, das wiederum verschiedene Mechanismen verwenden kann; unter Windows umfasst dies sowohl Kerberos als auch NTLM.

Wireshark kann all dies dekodieren und Ihnen schnell zeigen, was vor sich geht, vorausgesetzt, Sie verwenden kein TLS. Wenn Sie TLS verwenden, können Sie dafür sorgen, dass Wireshark den TLS-Verkehr entschlüsseln kann. Dies erfordert lediglich etwas mehr Aufwand.

verwandte Informationen