Проблемы аутентификации с WWW-Authenticate: согласование - PullRequest
31 голосов
/ 24 ноября 2010

Я пытаюсь зайти на сайт, защищенный паролем. Он не использует базовую аутентификацию (даже если в Firefox появляется то же поле пользователя / пароля), что и заголовок ответа: WWW-Authenticate: Negotiate.

Я хочу автоматизировать процесс входа в систему, отправив правильный заголовок.

В основном вы бы использовали что-то вроде:

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

Что бы я использовал для переговоров?

Ответы [ 2 ]

38 голосов
/ 06 ноября 2014

Размещение этой информации для будущих читателей.

  • 401 (неавторизованный) заголовок ответа -> Запрос аутентификации заголовка

  • Вот несколько WWW-Authenticateзаголовки ответа .(Полный список в IANA: Схемы аутентификации HTTP .)

    • WWW-Authenticate: Basic -> Авторизация: Basic + token - Использовать для базовой аутентификации
    • WWW-Authenticate: NTLM -> Авторизация: NTLM + токен (2 вызова)
    • WWW-Authenticate: Negotiate -> Авторизация: согласование + токен - используется для аутентификации Kerberos
      • Кстати:У IANA есть гневное замечание о Negotiate: Эта схема аутентификации нарушает как семантику HTTP (ориентированную на соединение), так и синтаксис (использование синтаксиса несовместимо с синтаксисом поля заголовка WWW-Authenticate и Authorization).

Вы можете установить заголовок Authorization: Basic только тогда, когда у вас есть заголовок WWW-Authenticate: Basic на вашем вызове 401.

Но так как у вас есть WWW-Authenticate: Negotiate, это должно быть в случае аутентификации на основе Kerberos.

28 голосов
/ 23 декабря 2010

Веб-сервер запрашивает у вас токен SPNEGO ( Простой и защищенный механизм согласования GSSAPI ).

Это изобретение корпорации Майкрософт для согласования типа проверки подлинности для использования для единого входа в Интернет.(единый вход):

  • либо NTLM
  • или Kerberos.

См .:

...