De:
Determine se a autenticação HTTP é NTLM ou Kerberos
link
[...] "Como estamos examinando esse rastreio 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. Eis um trecho do quadro que envia as informações de autenticação do servidor." cliente:
23 4294967263.4294641621 Solicitação HTTP GET LOCAL 00045A420DBC (do cliente usando a porta 3135) 192.168.0.2 192.168.0.4 IP HTTP: GET Request (do cliente usando a porta 3135) HTTP: método de solicitação = GET HTTP: identificador de recurso uniforme = /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: aceitar-idioma = en-us 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 = alien HTTP: conexão = keep-alive HTTP: Autorização = Negociar 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 seqüência de caracteres enviados nesse cabeçalho. Essa resposta nos diz que o cliente e o servidor estão negociando um 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 é definido como "Negociar" em vez de "NTLM". Isso não significa que ele usará Kerberos ou NTLM, mas "Negociará" o método de autorização e tentará primeiro o Kerberos se ele puder. 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
}