Antworten:
Von:
Stellen Sie fest, ob die HTTP-Authentifizierung NTLM oder Kerberos ist.
Http://support.microsoft.com/kb/891032
[...] "Da wir diesen Trace überprüfen, um festzustellen, ob der Client Authentifizierungsinformationen sendet, können wir die TCP-Segmente verwenden, um die HTTP-GET-Anforderungen und die Antwort vom Server zu verfolgen. Hier ist ein Ausschnitt aus dem Frame, der sendet Authentifizierungsinformationen vom Client:
23 4294967263.4294641621 LOCAL 00045A420DBC HTTP-GET-Anforderung (vom Client über Port 3135) 192.168.0.2 192.168.0.4 IP-HTTP: GET-Anforderung (vom Client über Port 3135) HTTP: Anforderungsmethode = GET HTTP: Uniform Resource Identifier = /webapplication1/webform1.aspx HTTP: Protokollversion = HTTP / 1.1 HTTP: Akzeptieren = 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 (kompatibel; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR HTTP: Host = Alien HTTP: Verbindung = Keep-Alive HTTP: Autorisierung = Verhandeln TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAAAFASgKAAAA 44 77 3D 3D 0D 0A 0D 0A AAADw == ....
"Was sagt uns das? Wir können sehen, dass der Authorization-Header auf" Negotiate "gesetzt ist, und wir können eine lange Zeichenfolge in diesem Header sehen. Diese Antwort sagt uns, dass der Client und der Server eine NTLM-Verbindung aushandeln. Wir wissen, dass hier die NTLM-Authentifizierung verwendet wird, da das erste Zeichen ein "T" ist. Wenn es ein "Y" wäre, wäre es Kerberos . Der Header wird auf "Negotiate" anstelle von "NTLM" gesetzt. Dies ist nicht der Fall bedeutet, dass Kerberos oder NTLM verwendet wird, dass jedoch die Autorisierungsmethode "ausgehandelt" wird und zuerst Kerberos 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
}
Wenn Sie Zugriff auf Ihren IIS-Server haben, ist die Antwort viel einfacher als das Überprüfen des HTTP-Verkehrs: Zeigen Sie einfach die Konfiguration des Site-Authentifizierungsmoduls für die Windows-Authentifizierung an.
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"
%>
Diese Antwort ist nicht ganz vollständig. Es gibt zwei Möglichkeiten, wie die Verbindung NTLM verwenden kann. Eine ist über die WWW-Authentifizierungsmethode "NTLM"; der andere ist über Verhandeln. Negotiate verwendet GSSAPI, das wiederum verschiedene Mechanismen verwenden kann. Unter Windows umfasst dies sowohl Kerberos als auch NTLM.
Wireshark kann all dies entschlüsseln und Ihnen schnell zeigen, was los ist, vorausgesetzt, Sie verwenden kein TLS. Wenn ja, können Sie festlegen, dass Wireshark den TLS-Verkehr entschlüsseln kann. Es erfordert nur einige zusätzliche Anstrengungen.
In Ihrem HTTP-Anforderungsheader (Sie können ihn in Firebug , Chrome Dev Tool oder Fiddler sehen ) sehen Sie so etwas, wenn Sie NTLM verwenden
Authorization: NTLM = TlRMTVNTGD6XAAAAGAAYAG425qAAYABgAhgAAAAAAAABIAAAADgAOAEgAAAAYABgAVgAAAAAAAACeAAAABYKIogUBKAoAAAAPcwBpAG0AcABsAGkAcABOADMAUgBXAEsAVwBBAEwAVABFAFIAQQAzVtleqNj7HAAAAAAAAAAAAAAAAAAAAACW3g66aPaiileWScIYweBj6fs2iGY / TA3 =
Im IIS-Verwaltungsbereich können Sie zur Authentifizierung wechseln und die gewünschte Authentifizierung auswählen.