#python-3.x #kerberos
#python-3.x #kerberos
Вопрос:
Я пытаюсь аутентифицироваться на сервере, используя пакет requests_kerberos, следуя приведенным здесь инструкциям:
https://github.com/requests/requests-kerberos
import requests
from requests_kerberos import HTTPKerberosAuth
kerberos_auth = HTTPKerberosAuth()
r = requests.get(<myserver>, auth=kerberos_auth)
r.text
И вот ответ:
‘Apache Tomcat / 6.0.53 — отчет об ошибке
Статус HTTP 401 — Требуется аутентификация
тип отчета о состоянии
требуется проверка подлинности сообщения
описание Для этого запроса требуется HTTP-аутентификация.
Apache Tomcat / 6.0.53
‘
klist
показывает, что у меня есть действительный TGT.
Я попытался установить принципала напрямую, но это не помогло. Я могу аутентифицироваться с помощью curl:
curl -i -L --negotiate -u : "<server>"
Я не уверен, что еще попробовать; все происходит «за кулисами», поэтому я не знаю, что я делаю не так.
Комментарии:
1. Я не знаком с тем, как Kerberos настроен в Tomcat, но должен быть какой-то способ получить из него информацию журнала. Вот с чего я бы начал. Получает ли он токен, и что он считает неправильным? Если вы не можете видеть, что делает сервер, затем сравните заголовки запроса curl с заголовками вашего запроса python. Также проверьте, сколько запросов выполняет python. Обычно клиенты сначала не отправляют учетные данные, затем получают 401 с сервера, а затем отправляют новый запрос с учетными данными (вы можете увидеть, как curl делает это, если вы включите детализацию).
2. Привет, тебе удалось это решить? Я сталкиваюсь с той же проблемой, и, похоже, ничего из того, что я пробовал, не работает. Я использовал
HTTPKerberosAuth(force_preemptive=True, principal="<username@REALM:password>")
, и мне удалось получитьrequests_kerberos.exceptions.KerberosExchangeError: authGSSClientStep() failed: ('SSPI: InitializeSecurityContext: The logon attempt failedrn',)
вместо обычного 401, но никакого реального прогресса.3. То же самое здесь, я также столкнулся с аналогичной проблемой