Risposte:
A partire dal:
Determinare se l'autenticazione HTTP è NTLM o Kerberos
http://support.microsoft.com/kb/891032
[...] "Dato che stiamo esaminando questa traccia per vedere se il client sta inviando informazioni di autenticazione, possiamo usare i segmenti TCP per tracciare le richieste HTTP GET e la risposta dal server. Ecco uno snippet dal frame che invia informazioni di autenticazione dal client:
23 4294967263.4294641621 LOCAL 00045A420DBC Richiesta HTTP GET (dal client che utilizza la porta 3135) 192.168.0.2 192.168.0.4 IP HTTP: richiesta GET (dal client che utilizza la porta 3135) HTTP: Metodo richiesta = GET HTTP: Identificatore di risorsa uniforme = /webapplication1/webform1.aspx HTTP: Versione protocollo = HTTP / 1.1 HTTP: Accetta = image / gif, image / x-xbitmap, image / jpeg, image / pjpeg, application / vnd. HTTP: Accept-Language = it-it HTTP: Accept-Encoding = gzip, deflate HTTP: User-Agent = Mozilla / 4.0 (compatibile; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR HTTP: Host = alien HTTP: Connessione = HTTP keep-alive: autorizzazione = Negozia TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAFASgKAAAA 44 77 3D 3D 0D 0A 0D 0A AAADw == ....
"Cosa ci dice questo? Possiamo vedere che l'intestazione dell'autorizzazione è impostata su" Negozia "e possiamo vedere una lunga serie di caratteri inviati in quell'intestazione. Questa risposta ci dice che il client e il server stanno negoziando una connessione NTLM. Sappiamo che qui viene utilizzata l'autenticazione NTLM perché il primo carattere è un "" T. "Se fosse una" Y ", sarebbe Kerberos . L'intestazione è impostata su" Negozia "anziché" NTLM ". significa che utilizzerà Kerberos o NTLM, ma che "Negozerà" il metodo di autorizzazione e tenterà prima Kerberos se è in grado. Se non può usare Kerberos, utilizzerà 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 hai accesso al tuo server IIS, la risposta è molto più semplice dell'ispezione del traffico HTTP: visualizza semplicemente la configurazione del modulo di autenticazione del sito per l'autenticazione di Windows.
usa il codice qui sotto nella pagina 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"
%>
Quella risposta non è del tutto completa. Esistono due modi in cui la connessione può utilizzare NTLM. Uno è tramite il metodo WWW-Authenticate "NTLM"; l'altro è tramite negoziazione. Negoziare utilizza GSSAPI, che a sua volta può utilizzare vari meccanismi; su Windows, questo include sia Kerberos che NTLM.
Wireshark può decodificare tutto questo e mostrarti rapidamente cosa sta succedendo, supponendo che non stai usando TLS. In tal caso, è possibile disporre che Wireshark sia in grado di decrittografare il traffico TLS; ci vuole solo qualche sforzo extra.
Nell'intestazione della richiesta HTTP (puoi vederla da Firebug , Chrome Dev Tool o Fiddler ) vedrai qualcosa di simile se usi NTLM
Autorizzazione: NTLM = TlRMTVNTGD6XAAAAGAAYAG425qAAYABgAhgAAAAAAAABIAAAADgAOAEgAAAAYABgAVgAAAAAAAACeAAAABYKIogUBKAoAAAAPcwBpAG0AcABsAGkAcABOADMAUgBXAEsAVwBBAEwAVABFAFIAQQAzVtleqNj7HAAAAAAAAAAAAAAAAAAAAACW3g66aPaiileWScIYweBj6fs2iGY / TA3 =
Dal pannello di gestione di IIS, puoi selezionare Autenticazione e scegliere l'autenticazione che preferisci.