使用当前用户凭据授权Python脚本使用NTLM访问SharePoint列表

使用当前用户凭据授权Python脚本使用NTLM访问SharePoint列表,python,sharepoint,authorization,ntlm,Python,Sharepoint,Authorization,Ntlm,我有一个脚本,用于检查SharePoint列表中的特定文件修订并返回结果。这很有效,但目前我的授权方法要求我在代码中包含自己的密码以访问SharePoint列表,这并不理想,因为密码必须经常更新,其他用户可能会查看我的登录详细信息 有人能告诉我使用当前用户凭据访问SharePoint网站的正确方向吗?我一直在研究ActiveDirectory、NTLM、SOAP等,但无法解释哪种方法是最合适的 我使用的是Python 2.7,工作函数如下: import urllib2 from sharepo

我有一个脚本,用于检查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
import requests
from requests_ntlm import HttpNtlmAuth, HttpNtlmSspiAuth

requests.get(site_url, auth=HttpNtlmSspiAuth())

有一个打开的拉取请求,请求\u ntlm库合并到Windows用户的SSPI身份验证中。我不得不对代码进行一些编辑,使其具有功能性,但它对我有效

您首先需要安装requests和requests\u ntlm,然后修改“requests\u ntlm\\uu init\uuu.py”包文件(如果在Windows上,则在Python“Lib\site packages”文件夹中),使其类似于以下内容:

from .requests_ntlm import HttpNtlmAuth
from .requests_ntlmsspi import HttpNtlmSspiAuth

__all__ = ('HttpNtlmAuth', 'HttpNtlmSspiAuth')
接下来,将“requests\u ntlmsspi.py”文件(来自上面的链接)添加到“requests\u ntlm”包文件夹中

然后,您应该能够使用当前用户的凭据进行身份验证,如下所示:

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
import requests
from requests_ntlm import HttpNtlmAuth, HttpNtlmSspiAuth

requests.get(site_url, auth=HttpNtlmSspiAuth())

NTLM SSPI身份验证最终在单独的包中发布:。它可以通过
pip安装请求\u协商\u sspi
安装。