Jawaban:
Dari:
Tentukan apakah otentikasi HTTP adalah NTLM atau Kerberos
http://support.microsoft.com/kb/891032
[...] "Karena kami mencari jejak ini untuk melihat apakah klien mengirim informasi otentikasi, kami dapat menggunakan segmen TCP untuk melacak permintaan HTTP GET dan respons dari server. Berikut ini cuplikan dari bingkai yang mengirimkan informasi otentikasi dari klien:
23 4294967263.4294641621 LOKAL 00045A420DBC HTTP MENDAPATKAN Permintaan (dari klien menggunakan port 3135) 192.168.0.2 192.168.0.4 IP HTTP: MENDAPATKAN Permintaan (dari klien menggunakan port 3135) HTTP: Metode Permintaan = GET HTTP: Uniform Resource Identifier = /webapplication1/webform1.aspx HTTP: Versi Protokol = HTTP / 1.1 HTTP: Terima = image / gif, image / x-xbitmap, image / jpeg, image / pjpeg, application / vnd. HTTP: Bahasa Terima = en-us HTTP: Terima-Pengkodean = gzip, buang HTTP: User-Agent = Mozilla / 4.0 (kompatibel; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR HTTP: Host = alien HTTP: Koneksi = Tetap-Hidupkan HTTP: Otorisasi = Negosiasikan TlRMTVNTUAABAAAB4IIogAAAAAAAAAAAAAAAAAAAAAFASgKAAAA 44 77 3D 3D 0D 0A 0D 0A 0A 0A 0D 0A AAADw == ....
"Apa artinya ini kepada kita? Kita dapat melihat bahwa tajuk Otorisasi diatur ke" Negosiasi "dan kita dapat melihat serangkaian panjang karakter yang dikirim dalam tajuk itu. Respons ini memberi tahu kita bahwa klien dan server sedang menegosiasikan koneksi NTLM. Kita tahu bahwa otentikasi NTLM sedang digunakan di sini karena karakter pertama adalah '"T." Jika itu adalah "Y," itu akan menjadi Kerberos . Header diatur ke "Negosiasi" bukan "NTLM." Ini tidak berarti itu akan menggunakan Kerberos atau NTLM, tetapi itu akan "Negosiasikan" metode otorisasi dan coba Kerberos terlebih dahulu jika itu bisa. Jika tidak bisa menggunakan Kerberos, itu akan menggunakan 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
}
Jika Anda memiliki akses ke server IIS Anda maka jawabannya jauh lebih sederhana daripada memeriksa lalu lintas HTTP: Cukup lihat konfigurasi modul Authentication situs untuk Windows Authentication.
gunakan kode di bawah ini di halaman 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"
%>
Jawaban itu tidak lengkap. Ada dua cara koneksi dapat menggunakan NTLM. Salah satunya adalah melalui metode WWW-Authenticate "NTLM"; yang lainnya adalah melalui Negosiasi. Bernegosiasi menggunakan GSSAPI, yang pada gilirannya dapat menggunakan berbagai mekanisme; pada Windows, ini termasuk Kerberos dan NTLM.
Wireshark dapat memecahkan kode semua ini dan menunjukkan dengan cepat apa yang terjadi, dengan asumsi Anda tidak menggunakan TLS. Jika ya, Anda dapat mengatur agar Wireshark dapat mendekripsi lalu lintas TLS; itu hanya membutuhkan usaha ekstra.
Di Header Permintaan HTTP Anda (Anda bisa melihatnya dari Firebug , Chrome Dev Tool atau Fiddler ) Anda akan melihat sesuatu seperti ini jika Anda menggunakan NTLM
Otorisasi: NTLM = TlRMTVNTGD6XAAAAGAAYAG425qAAYABgAhgAAAAAAAABIAAAADgAOAEgAAAAYABgAVgAAAAAAAACeAAAABYKIogUBKAoAAAAPcwBpAG0AcABsAGkAcABOADMAUgBXAEsAVwBBAEwAVABFAFIAQQAzVtleqNj7HAAAAAAAAAAAAAAAAAAAAACW3g66aPaiileWScIYweBj6fs2iGY / TA3 =
Dari panel manajemen IIS, Anda dapat pergi Otentikasi dan memilih otentikasi yang Anda inginkan.