Авторизуйтесь, используя текущие учетные данные пользователя для скрипта 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())
Другие вопросы по тегам