Как использовать запросы Python для проверки подлинности NTLM SSPI?
Моя цель - аутентифицировать моего клиента, который использует библиотеку запросов (2.11.1) в Python 3.5.2 через NTLM с SSPI, чтобы пользователю не приходилось вручную вводить учетные данные своего домена (используемые для входа на ПК).
Я нашел следующие возможности, но ни одна из них не работает для меня:
HttpNtlmSspiAuth вызывает исключение в запросах:
Импортировать запросы из request_ntlm import HttpNtlmAuth, HttpNtlmSspiAuth
запросы.get(site_url, auth=HttpNtlmSspiAuth())
запросы-sspi-ntlm всегда получают 401:
Импортировать запросы из request_sspi_ntlm import HttpNtlmAuth
сеанс = запросы.Session () session.auth = HttpNtlmAuth () session.get (" http://ntlm_protected_site.com/")
И запросы-согласовать-sspi также вызывает исключение в запросах:
Импортировать запросы из request_negotiate_sspi import HttpNegotiateAuth
r = reports.get (' https://iis.contoso.com/', auth=HttpNegotiateAuth())
Я делаю что-то неправильно?
3 ответа
Пакет запрашивает-вести переговоры-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.