我有一个脚本,用于检查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
对于requests_ntlm库,这里有一个开放拉取请求,可以合并到Windows用户的SSPI身份验证中。我必须对代码进行一些编辑才能使其正常运行,但是它对我有用。
首先,您需要安装request和request_ntlm,然后修改“ requests_ntlm \ init.py”包文件(如果在Windows中,则在Python“ Lib \ site-packages”文件夹中)类似于以下内容:
from .requests_ntlm import HttpNtlmAuth from .requests_ntlmsspi import HttpNtlmSspiAuth __all__ = ('HttpNtlmAuth', 'HttpNtlmSspiAuth')
接下来,将“ requests_ntlmsspi.py”文件(来自上面的链接)添加到“ requests_ntlm”包文件夹中。
然后,您应该能够使用当前用户的凭据进行身份验证,如下所示:
import requests from requests_ntlm import HttpNtlmAuth, HttpNtlmSspiAuth requests.get(site_url, auth=HttpNtlmSspiAuth())