Могу ли я указать клиентам, что SPNEGO поддерживается, но NTLM не предназначено для HTTP-запросов?

StackOverflow https://stackoverflow.com/questions/489950

Вопрос

Два дополнения WWW-Authenticate, которые использует Microsoft, о которых я в настоящее время знаю, - это

  • NTLM
  • Вести переговоры

Если согласование отправлено с сервера, в зависимости от набора условий будет использоваться Kerberos

  • Зона Интранета
  • Доступ к серверу с использованием имени хоста, а не IP
  • Встроенная аутентификация Windows в IE включена, хост является доверенным в Firefox
  • Сервер не является локальным для браузера
  • Система Kerberos клиента проходит проверку подлинности на контроллере домена

Затем будет предпринята попытка Kerberos между сервером и клиентом, если что-то из вышеперечисленного не выполняется, то будет предпринята попытка NTLM.

Мой вопрос в том, есть ли какой-нибудь способ для сервера указать, что NTLM не следует отправлять?В настоящее время я обрабатываю это, отслеживая запрос в сеансе, и если получено сообщение NTLM, оно отключает Kerberos и WWW-аутентификацию на оставшуюся часть срока службы этого сеанса.

Это было полезно?

Решение

Начальный WWW-Authenticate заголовок только указывает negotiate.Он больше ничего не может сказать, например "нет NTLM".

Я думаю, что можно ответить на первую аутентификацию:Заголовок {Base64 NTLMSSP}, отправленный клиентом с 401 unauthorized и еще один Negotiate заголовок, который может включать маркер ответа, возможно, включающий SupportedMechanisms это указывает Только Kerberos.

Но я подозреваю, что это только поможет вам "unauthorized", потому что в первую очередь он возвращался к NTLM.

Другие советы

Да, ты можешь.Взгляните на справочные документы из проекта фильтрации HTTP-сервлетов SPNEGO.

Вы можете это сделать, (по крайней мере, теоретически) да.IE может делать совершенно странные вещи, такие как отправка токенов Kerberos без соответствующей инкапсуляции SPNEGO ASN.1, но это уже другая тема.В соответствующем состоянии (http://tools.ietf.org/html/rfc4178#section-4.1) Реализация, вы могли бы это сделать.

Если вы можете манипулировать элементом NegTokenInit mechTypes так, чтобы он содержал только Kerberos, это вынуждает клиента отправлять Kerberos или не проходить аутентификацию.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top