Как я могу узнать, какой тип аутентификации использует сервер? - PullRequest
5 голосов
/ 28 января 2010

Мне нужно получить доступ к веб-серверу по номеру http://someserver, и для этого требуется некоторая аутентификация. Как я могу определить, использует ли он NTLM, Kerberos или что-то еще?

Ответы [ 3 ]

12 голосов
/ 14 декабря 2010

Другой способ сделать это - взглянуть на первые несколько байтов заголовка.

Если он начинается с Negotiate TlR, значит, вы делаете SPNEGO поверх NTLM

Если он начинается с Negotiate YII, значит, вы выполняете SPNEGO поверх Kerberos.

Grant

6 голосов
/ 28 января 2010

Используйте инструмент типа Fiddler , чтобы посмотреть заголовки ответа. Сервер отправит обратно некоторые заголовки «WWW-Authenticate», в которых перечислены различные поддерживаемые протоколы безопасности.

4 голосов
/ 04 февраля 2014

Чтобы расширить ответ Гранта Чермака:

Заголовок WWW-Authenticate кодируется в base64. Когда он начинается с TlR, после декодирования мы видим, что он начинается с NTLMSSP (http://msdn.microsoft.com/en-us/library/cc236641.aspx), поэтому мы знаем, что это NTLM.

Когда он начинается с YII, после декодирования мы видим, что он начинается с байтов 0x60, 0x82 (т. Е. Объекта, сконструированного приложением), затем есть два байта для длины всего токена, а затем есть: 0x06, 0x06, 0x2b, 0x06 , 0x01, 0x05, 0x05, 0x02 (то есть OID SPNEGO: 1.3.6.1.5.5.2). (http://msdn.microsoft.com/en-us/library/ms995330.aspx). Мы знаем, что это токен SPNEGO.

В зависимости от длины токена spnego заголовок WWW-Authenticate может начинаться с YA до YP.

Kamil & SPL

...