Как использовать запросы Python для проверки подлинности NTLM SSPI?

Моя цель - аутентифицировать моего клиента, который использует библиотеку запросов (2.11.1) в Python 3.5.2 через NTLM с SSPI, чтобы пользователю не приходилось вручную вводить учетные данные своего домена (используемые для входа на ПК).

Я нашел следующие возможности, но ни одна из них не работает для меня:

  • HttpNtlmSspiAuth вызывает исключение в запросах:

    Импортировать запросы из request_ntlm import HttpNtlmAuth, HttpNtlmSspiAuth

    запросы.get(site_url, auth=HttpNtlmSspiAuth())




Я делаю что-то неправильно?

3 ответа

Решение

Я понял это сам.

Я адаптировал для запросов и Python 3 этот код и этот модуль, который взаимодействует с Windows SSPI. Вы можете получить это здесь.

Пакет запрашивает-вести переговоры-sspi работает для меня.

У меня, вероятно, была та же проблема с ПО, но я был слишком ленив, чтобы попробовать решение ПО и интегрировать код ПО в мой. И Google выручил меня. В случае, если кто-то сталкивается с тем же исключением, вызванным из sspi.py ValueError: year 30828 is out of range, это известная проблема для python 3.6 of messages -gotiate-sspi. Смотрите здесь: Github-Issue

Я решил это, создав новую среду conda с python 3.4. Затем переустановите некоторые зависимости, а также requests-negotiate-sspiБум, все работает.

Та же проблема здесь, но решена, когда я понял, что нахожусь в учетной записи администратора, у которой нет авторизации для этого ресурса uri.

Другие вопросы по тегам