
Como posso verificar se meu site IIS está usando NTLM ou Kerberos? E como posso alterar a autenticação de Kerberos para NTLM? Estou usando o IIS 7.5.
Responder1
De:
Determine se a autenticação HTTP é NTLM ou Kerberos
http://support.microsoft.com/kb/891032
[...] "Como estamos examinando 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 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==....
"O que isso nos diz? Podemos ver que o cabeçalho de autorização está definido como" Negociar "e podemos ver uma longa sequência de caracteres enviada nesse cabeçalho. Esta 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 Kerberos. O cabeçalho está definido como “Negociar” em vez de “NTLM”. Isso não significa que usará Kerberos ou NTLM, mas que irá "negociar" o método de autorização e tentar o Kerberos primeiro, se for possível. Se não puder 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
}
Responder2
Se você tiver acesso ao seu servidor IIS, a resposta é muito mais simples do que inspecionar o tráfego HTTP: basta visualizar a configuração do módulo de autenticação do site para autenticação do Windows.
- No Gerenciador do IIS
- Selecione seu site
- Clique no módulo Autenticação
- Selecione Autenticação do Windows
- Selecione Provedores...
Responder3
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"
%>
Responder4
Essa resposta não está totalmente completa. Existem duas maneiras de a conexão usar NTLM. Uma é através do método WWW-Authenticate "NTLM"; a outra é via Negociar. Negociar usa GSSAPI, que por sua vez pode usar vários mecanismos; no Windows, isso inclui Kerberos e NTLM.
O Wireshark pode decodificar tudo isso e mostrar rapidamente o que está acontecendo, desde que você não esteja usando TLS. Se estiver, você pode fazer com que o Wireshark seja capaz de descriptografar o tráfego TLS; basta um esforço extra.