Подтвердить что ты не робот

Проблемы с аутентификацией с помощью WWW-аутентификации: переговоры

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

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

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

Authorization: Basic QWxhZGRpbjpvcGVuIHNlc2FtZQ==

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

4b9b3361

Ответ 1

Веб-сервер запрашивает вам токен SPNEGO (Simple and Protected GSSAPI Negotiation Mechanism).

Это изобретение Microsoft для согласования типа аутентификации для использования в режиме единого входа в систему (single-sign-on):

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

См:

Ответ 2

Поместив эту информацию здесь для будущих читателей.

  • 401 (неавторизованный) заголовок ответа → Запрос заголовка проверки

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

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

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

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