Авторизуйтесь, используя текущие учетные данные пользователя для скрипта Python, обращающегося к списку SharePoint с использованием NTLM
У меня есть сценарий, который проверяет список SharePoint для определенной версии файла и возвращает результат. Это работает хорошо, но в настоящее время мой метод авторизации требует, чтобы я включил свой собственный пароль в код, чтобы получить доступ к списку SharePoint, что не идеально, поскольку пароли приходится часто обновлять, и другие пользователи могут потенциально просматривать мои данные для входа.
Может ли кто-нибудь указать мне правильное направление использования учетных данных текущих пользователей для доступа к сайту SharePoint? Я ходил кругами, рассматривая ActiveDirectory, NTLM, SOAP и т. Д., И не могу понять, какой из них является наиболее подходящим.
Я использую Python 2.7 и рабочая функция выглядит следующим образом:
import urllib2
from sharepoint import SharePointSite
from ntlm import HTTPNtlmAuthHandler
def read_sharepoint_list(current_project):
# my Windows credentials
username = "Domain\\user.name"
password = "my_password"
# the sharepoint info
site_url = "http://SharePoint/"
list_name = "My List"
# an opener for the NTLM authentication
passman = urllib2.HTTPPasswordMgrWithDefaultRealm()
passman.add_password(None, site_url, username, password)
auth_NTLM = HTTPNtlmAuthHandler.HTTPNtlmAuthHandler(passman)
# create and install the opener
opener = urllib2.build_opener(auth_NTLM)
urllib2.install_opener(opener)
# create a SharePointSite object
site = SharePointSite(site_url, opener)
sp_list = site.lists[list_name]
for row in sp_list.rows:
if current_project in row.Filename:
basecase_rev = row.Rev
return basecase_rev
1 ответ
Здесь есть открытый запрос на получение доступа к библиотеке reports_ntlm для проверки подлинности SSPI для пользователей Windows. Я должен был сделать несколько изменений в коде, чтобы он был функциональным, но он работает для меня.
Сначала вам нужно будет установить запросы и request_ntlm, а затем изменить файл пакета "reports_ntlm \ __ init__.py" (в папке Python "Lib\site-packages", если в Windows), чтобы он выглядел следующим образом:
from .requests_ntlm import HttpNtlmAuth
from .requests_ntlmsspi import HttpNtlmSspiAuth
__all__ = ('HttpNtlmAuth', 'HttpNtlmSspiAuth')
Затем, добавьте файл "reports_ntlmsspi.py" (по ссылке выше) в папку пакета "Applic_ntlm".
После этого вы сможете аутентифицироваться, используя учетные данные текущего пользователя, следующим образом:
import requests
from requests_ntlm import HttpNtlmAuth, HttpNtlmSspiAuth
requests.get(site_url, auth=HttpNtlmSspiAuth())