使用当前用户凭据授权 Python 脚本使用 NTLM 访问 SharePoint 列表
Authorise with current user credentials for Python script accessing SharePoint list using NTLM
我有一个脚本可以检查 SharePoint 列表中的特定文件修订和 returns 结果。这很有效,但目前我的授权方法要求我在代码中包含我自己的密码才能访问 SharePoint 列表,这并不理想,因为必须经常更新密码并且其他用户可能会查看我的登录详细信息。
有人可以为我指明使用当前用户凭据访问 SharePoint 网站的正确方向吗?我一直在兜圈子查看 ActiveDirectory、NTLM、SOAP 等,但无法破译其中哪一个是最合适的方法。
我用的是Python2.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 库 here 有一个开放的拉取请求合并到 Windows 用户的 SSPI 身份验证中。我必须对代码进行一些编辑才能正常运行,但它对我有用。
您首先需要安装请求和 requests_ntlm,然后修改 "requests_ntlm\__init__.py" 包文件(在您的 Python "Lib\site-packages" 文件夹中,如果 Windows) 类似于以下内容:
from .requests_ntlm import HttpNtlmAuth
from .requests_ntlmsspi import HttpNtlmSspiAuth
__all__ = ('HttpNtlmAuth', 'HttpNtlmSspiAuth')
接下来,将 "requests_ntlmsspi.py" 文件(来自上面的 link)添加到 "requests_ntlm" 包文件夹。
然后您应该能够使用当前用户的凭据进行身份验证,如下所示:
import requests
from requests_ntlm import HttpNtlmAuth, HttpNtlmSspiAuth
requests.get(site_url, auth=HttpNtlmSspiAuth())
我有一个脚本可以检查 SharePoint 列表中的特定文件修订和 returns 结果。这很有效,但目前我的授权方法要求我在代码中包含我自己的密码才能访问 SharePoint 列表,这并不理想,因为必须经常更新密码并且其他用户可能会查看我的登录详细信息。
有人可以为我指明使用当前用户凭据访问 SharePoint 网站的正确方向吗?我一直在兜圈子查看 ActiveDirectory、NTLM、SOAP 等,但无法破译其中哪一个是最合适的方法。
我用的是Python2.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 库 here 有一个开放的拉取请求合并到 Windows 用户的 SSPI 身份验证中。我必须对代码进行一些编辑才能正常运行,但它对我有用。
您首先需要安装请求和 requests_ntlm,然后修改 "requests_ntlm\__init__.py" 包文件(在您的 Python "Lib\site-packages" 文件夹中,如果 Windows) 类似于以下内容:
from .requests_ntlm import HttpNtlmAuth
from .requests_ntlmsspi import HttpNtlmSspiAuth
__all__ = ('HttpNtlmAuth', 'HttpNtlmSspiAuth')
接下来,将 "requests_ntlmsspi.py" 文件(来自上面的 link)添加到 "requests_ntlm" 包文件夹。
然后您应该能够使用当前用户的凭据进行身份验证,如下所示:
import requests
from requests_ntlm import HttpNtlmAuth, HttpNtlmSspiAuth
requests.get(site_url, auth=HttpNtlmSspiAuth())