Ответы:
От:
Определите, является ли HTTP-аутентификация NTLM или Kerberos
http://support.microsoft.com/kb/891032
[...] "Так как мы просматриваем эту трассировку, чтобы увидеть, отправляет ли клиент информацию аутентификации, мы можем использовать сегменты TCP для отслеживания запросов HTTP GET и ответа от сервера. Вот фрагмент из кадра, который отправляет аутентификационную информацию от клиента:
23 4294967263.4294641621 LOCAL 00045A420DBC HTTP GET-запрос (от клиента, использующего порт 3135) 192.168.0.2 192.168.0.4 IP HTTP: GET-запрос (от клиента, использующего порт 3135) HTTP: Метод запроса = GET HTTP: унифицированный идентификатор ресурса = /webapplication1/webform1.aspx HTTP: версия протокола = 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, выкачать HTTP: User-Agent = Mozilla / 4.0 (совместимо; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR HTTP: Host = чужой HTTP: соединение = Keep-Alive HTTP: авторизация = переговоры TlRMTVNTUAABAAAAB4IIogAAAAAAAAAAAAAAAAAAAAAFASgKAAAA 44 77 3D 3D 0D 0A 0D 0A AAADw == ....
«Что это говорит нам? Мы можем видеть, что заголовок Authorization установлен на« Negotiate », и мы можем видеть длинную строку символов, отправленных в этом заголовке. Этот ответ говорит нам, что клиент и сервер согласовывают соединение NTLM. Мы знаем, что здесь используется аутентификация NTLM, потому что первый символ - «T». Если бы это было «Y», это был бы Kerberos . Заголовок установлен на «Согласование» вместо «NTLM». Это не Я имею в виду, что он будет использовать Kerberos или NTLM, но будет «согласовывать» метод авторизации и сначала попробует Kerberos, если сможет. Если он не сможет использовать Kerberos, он будет использовать 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
}
Если у вас есть доступ к вашему серверу IIS, тогда ответ гораздо проще, чем проверка HTTP-трафика: просто просмотрите конфигурацию модуля проверки подлинности сайта для проверки подлинности Windows.
используйте код ниже на странице 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"
%>
Этот ответ не является полным. Существует два способа подключения NTLM. Один из них - через WWW-метод аутентификации NTLM; другой через переговоры. Переговоры используют GSSAPI, который в свою очередь может использовать различные механизмы; в Windows это включает в себя как Kerberos, так и NTLM.
Wireshark может декодировать все это и быстро показать вам, что происходит, при условии, что вы не используете TLS. Если да, вы можете организовать, чтобы Wireshark мог расшифровывать трафик TLS; это просто требует дополнительных усилий.
В вашем заголовке HTTP-запроса (вы можете увидеть его в Firebug , Chrome Dev Tool или Fiddler ) вы увидите нечто подобное, если вы используете NTLM
Авторизация: NTLM = TlRMTVNTGD6XAAAAGAAYAG425qAAYABgAhgAAAAAAAABIAAAADgAOAEgAAAAYABgAVgAAAAAAAACeAAAABYKIogUBKAoAAAAPcwBpAG0AcABsAGkAcABOADMAUgBXAEsAVwBBAEwAVABFAFIAQQAzVtleqNj7HAAAAAAAAAAAAAAAAAAAAACW3g66aPaiileWScIYweBj6fs2iGY / TA3 =
Из панели управления IIS вы можете перейти к аутентификации и выбрать предпочитаемую аутентификацию.