Python 3: Аутентификация с использованием пакета response-kerberos

#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. То же самое здесь, я также столкнулся с аналогичной проблемой