Respostas:
De:
Determine se a autenticação HTTP é NTLM ou Kerberos
http://support.microsoft.com/kb/891032
[...] "Como examinamos esse rastreamento para ver se o cliente está enviando informações de autenticação, podemos usar os segmentos TCP para rastrear as solicitações HTTP GET e a resposta do servidor. Aqui está um trecho do quadro que envia informações de autenticação do cliente:
23 4294967263.4294641621 LOCAL 00045A420DBC Solicitação HTTP GET (do cliente usando a porta 3135) 192.168.0.2 192.168.0.4 IP HTTP: Solicitação GET (do cliente usando a porta 3135) HTTP: Método de solicitação = GET HTTP: Identificador uniforme de recursos = /webapplication1/webform1.aspx HTTP: Versão do protocolo = HTTP / 1.1 HTTP: Aceitar = imagem / gif, imagem / x-xbitmap, imagem / jpeg, imagem / pjpeg, aplicativo / vnd. HTTP: Accept-Language = pt-br HTTP: Accept-Encoding = gzip, deflate HTTP: User-Agent = Mozilla / 4.0 (compatível; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR HTTP: Host = estrangeiro HTTP: Conexão = HTTP ativo: Autorização = Negociar TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAFASgKAAAA 44 77 3D 3D 0D 0A 0D 0A AAADw == ....
"O que isso nos diz? Podemos ver que o cabeçalho da Autorização está definido como" Negociar "e podemos ver uma longa sequência de caracteres enviados nesse cabeçalho. Essa resposta nos diz que o cliente e o servidor estão negociando uma conexão NTLM. Sabemos que a autenticação NTLM está sendo usada aqui porque o primeiro caractere é um "" T. "Se fosse um" Y ", seria o Kerberos . O cabeçalho está definido como" Negociar "em vez de" NTLM ". significa que ele usará o Kerberos ou NTLM, mas que "Negociará" o método de autorização e tentará primeiro o Kerberos, se for possível. Se não puder usar o Kerberos, usará o 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
}
Se você tiver acesso ao servidor IIS, a resposta é muito mais simples do que a inspeção do tráfego HTTP: basta exibir a configuração do módulo de autenticação do site para autenticação do Windows.
use o código abaixo na 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"
%>
Essa resposta não está completa. Há duas maneiras pelas quais a conexão pode usar o NTLM. Uma é através do método WWW-Authenticate "NTLM"; o outro é via Negociar. Negociar usa GSSAPI, que por sua vez pode usar vários mecanismos; no Windows, isso inclui o Kerberos e o NTLM.
O Wireshark pode decodificar tudo isso e mostrar rapidamente o que está acontecendo, supondo que você não esteja usando TLS. Se estiver, você pode providenciar para que o Wireshark seja capaz de descriptografar o tráfego TLS; é preciso apenas um esforço extra.
No cabeçalho de solicitação HTTP (você pode vê-lo no Firebug , Chrome Dev Tool ou Fiddler ), verá algo assim se usar o NTLM
Autorização: NTLM = TlRMTVNTGD6XAAAAGAAYAG425qAAYABgAhgAAAAAAAABIAAAADgAOAEgAAAAYABgAVgAAAAAAAACeAAAABYKIogUBKAoAAAAPcwBpAG0AcABsAGkAcABOADMAUgBXAEsAVwBBAEwAVABFAFIAQQAzVtleqNj7HAAAAAAAAAAAAAAAAAAAAACW3g66aPaiileWScIYweBj6fs2iGY / TA3 =
No painel de gerenciamento do IIS, você pode acessar Autenticação e escolher a autenticação de sua preferência.