Réponses:
De:
Déterminez si l'authentification HTTP est NTLM ou Kerberos
http://support.microsoft.com/kb/891032
[...] "Puisque nous examinons cette trace pour voir si le client envoie des informations d'authentification, nous pouvons utiliser les segments TCP pour suivre les requêtes HTTP GET et la réponse du serveur. Voici un extrait du cadre qui envoie les informations d'authentification du client:
23 4294967263.4294641621 LOCAL 00045A420DBC HTTP GET Request (du client utilisant le port 3135) 192.168.0.2 192.168.0.4 IP HTTP: GET Request (du client utilisant le port 3135) HTTP: Méthode de requête = GET HTTP: Uniform Resource Identifier = /webapplication1/webform1.aspx HTTP: Version du protocole = HTTP / 1.1 HTTP: Accepter = image / gif, image / x-xbitmap, image / jpeg, image / pjpeg, application / vnd. HTTP: Accept-Language = en-us HTTP: Accept-Encoding = gzip, dégonfler HTTP: User-Agent = Mozilla / 4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR HTTP: Host = alien HTTP: Connection = HTTP Keep-Alive: Autorisation = Négocier TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAFASgKAAAA 44 77 3D 3D 0D 0A 0D 0A AAADw == ....
"Qu'est-ce que cela nous dit? Nous pouvons voir que l'en-tête d'autorisation est défini sur" Négocier "et nous pouvons voir une longue chaîne de caractères envoyée dans cet en-tête. Cette réponse nous indique que le client et le serveur négocient une connexion NTLM. Nous savons que l'authentification NTLM est utilisée ici car le premier caractère est un "" T. "S'il s'agissait d'un" Y ", ce serait Kerberos . L'en-tête est défini sur" Négocier "au lieu de" NTLM ". Cela ne signifie pas signifie qu'il utilisera Kerberos ou NTLM, mais qu'il "négociera" la méthode d'autorisation et essaiera d'abord Kerberos s'il le peut. S'il ne peut pas utiliser Kerberos, il utilisera 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 vous avez accès à votre serveur IIS, la réponse est beaucoup plus simple que d'inspecter le trafic HTTP: affichez simplement la configuration du module d'authentification du site pour l'authentification Windows.
utilisez le code ci-dessous dans la page 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"
%>
Cette réponse n'est pas tout à fait complète. La connexion peut utiliser NTLM de deux manières. L'une est via la méthode WWW-Authenticate "NTLM"; l'autre est via Negotiate. Négocier utilise GSSAPI, qui à son tour peut utiliser divers mécanismes; sous Windows, cela inclut à la fois Kerberos et NTLM.
Wireshark peut décoder tout cela et vous montrer rapidement ce qui se passe, en supposant que vous n'utilisez pas TLS. Si vous l'êtes, vous pouvez faire en sorte que Wireshark soit capable de décrypter le trafic TLS; cela demande juste un effort supplémentaire.
Dans votre en-tête de demande HTTP (vous pouvez le voir depuis Firebug , Chrome Dev Tool ou Fiddler ), vous verrez quelque chose comme ça si vous utilisez NTLM
Autorisation: NTLM = TlRMTVNTGD6XAAAAGAAYAG425qAAYABgAhgAAAAAAAABIAAAADgAOAEgAAAAYABgAVgAAAAAAAACeAAAABYKIogUBKAoAAAAPcwBpAG0AcABsAGkAcABOADMAUgBXAEsAVwBBAEwAVABFAFIAQQAzVtleqNj7HAAAAAAAAAAAAAAAAAAAAACW3g66aPaiileWScIYweBj6fs2iGY / TA3 =
Dans le panneau de gestion IIS, vous pouvez aller Authentification et choisir l'authentification que vous préférez.