Ste*_*lin 6 python sharepoint authorization 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
Run Code Online (Sandbox Code Playgroud)
这里有一个针对 requests_ntlm 库的开放拉取请求,用于合并 Windows 用户的 SSPI 身份验证。我必须对代码进行一些编辑才能使其正常工作,但它对我有用。
您首先需要安装 requests 和 requests_ntlm,然后修改“requests_ntlm\__init__.py”包文件(如果在 Windows 上,则位于 Python“Lib\site-packages”文件夹中)以类似于以下内容:
from .requests_ntlm import HttpNtlmAuth
from .requests_ntlmsspi import HttpNtlmSspiAuth
__all__ = ('HttpNtlmAuth', 'HttpNtlmSspiAuth')
Run Code Online (Sandbox Code Playgroud)
接下来,将“requests_ntlmsspi.py”文件(来自上面的链接)添加到“requests_ntlm”包文件夹中。
然后,您应该能够使用当前用户的凭据进行身份验证,如下所示:
import requests
from requests_ntlm import HttpNtlmAuth, HttpNtlmSspiAuth
requests.get(site_url, auth=HttpNtlmSspiAuth())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18013 次 |
| 最近记录: |