Respuestas:
Desde:
Determine si la autenticación HTTP es NTLM o Kerberos
http://support.microsoft.com/kb/891032
[...] "Dado que estamos revisando este rastreo para ver si el cliente está enviando información de autenticación, podemos usar los segmentos TCP para rastrear las solicitudes HTTP GET y la respuesta del servidor. Aquí hay un fragmento del marco que envía información de autenticación del cliente:
23 4294967263.4294641621 LOCAL 00045A420DBC Solicitud HTTP GET (del cliente utilizando el puerto 3135) 192.168.0.2 192.168.0.4 IP HTTP: Solicitud GET (del cliente utilizando el puerto 3135) HTTP: Método de solicitud = GET HTTP: Identificador uniforme de recursos = /webapplication1/webform1.aspx HTTP: Versión del protocolo = HTTP / 1.1 HTTP: Aceptar = 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: conexión = Keep-Alive HTTP: Autorización = Negociar TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAFASgKAAAA 44 77 3D 3D 0D 0A 0D 0A AAADw == ....
"¿Qué nos dice esto? Podemos ver que el encabezado de Autorización está configurado en" Negociar "y podemos ver una larga cadena de caracteres enviados en ese encabezado. Esta respuesta nos dice que el cliente y el servidor están negociando una conexión NTLM. Sabemos que la autenticación NTLM se está utilizando aquí porque el primer carácter es una "T". Si fuera una "Y", sería Kerberos . El encabezado se establece en "Negociar" en lugar de "NTLM". significa que usará Kerberos o NTLM, pero que "negociará" el método de autorización e intentará Kerberos primero si puede. Si no puede usar Kerberos, usará NTLM ".
// 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
}
Si tiene acceso a su servidor IIS, la respuesta es mucho más simple que inspeccionar el tráfico HTTP: simplemente vea la configuración del módulo de autenticación del sitio para la autenticación de Windows.
use el siguiente código en la página html / asp:
<%
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"
%>
Esa respuesta no es completa. Hay dos formas en que la conexión puede usar NTLM. Uno es a través del método WWW-Authenticate "NTLM"; El otro es a través de Negociar. Negociar usa GSSAPI, que a su vez puede usar varios mecanismos; en Windows, esto incluye Kerberos y NTLM.
Wireshark puede decodificar todo esto y mostrarle rápidamente lo que está sucediendo, suponiendo que no esté usando TLS. Si es así, puede organizar que Wireshark pueda descifrar el tráfico TLS; solo requiere un esfuerzo extra.
En su encabezado de solicitud HTTP (puede verlo desde Firebug , Chrome Dev Tool o Fiddler ) verá algo como esto si usa NTLM
Autorización: NTLM = TlRMTVNTGD6XAAAAGAAYAG425qAAYABgAhgAAAAAAAABIAAAADgAOAEgAAAAYABgAVgAAAAAAAACeAAAABYKIogUBKAoAAAAPcwBpAG0AcABsAGkAcABOADMAUgBXAEsAVwBBAEwAVABFAFIAQQAzVtleqNj7HAAAAAAAAAAAAAAAAAAAAACW3g66aPaiileWScIYweBj6fs2iGY / ta3 =
Desde el panel de administración de IIS, puede ir a Autenticación y elegir la autenticación que prefiera.