Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用windows身份验证访问python中的sharepoint网站_Python_Authentication_Sharepoint_Python Requests - Fatal编程技术网

使用windows身份验证访问python中的sharepoint网站

使用windows身份验证访问python中的sharepoint网站,python,authentication,sharepoint,python-requests,Python,Authentication,Sharepoint,Python Requests,我正在尝试使用使用windows身份验证的sharepoint网站。我可以使用请求模块访问该站点,但它要求我明确说明我的windows密码 import requests from requests_ntlm import HttpNtlmAuth SITE = "https://sharepointsite.com/" PASSWORD = "pw" USERNAME = "domain\\user" response = requests.get(SITE, auth=HttpNtlmA

我正在尝试使用使用windows身份验证的sharepoint网站。我可以使用
请求
模块访问该站点,但它要求我明确说明我的windows密码

import requests
from requests_ntlm import HttpNtlmAuth

SITE = "https://sharepointsite.com/"
PASSWORD = "pw"
USERNAME = "domain\\user"

response = requests.get(SITE, auth=HttpNtlmAuth(USERNAME,PASSWORD))
print response.status_code

Python有没有办法通过windows身份验证访问该站点,这样我就不必提供密码?这似乎可以通过
请求实现,但我不知道如何实现。

如果您不想明确说明您的windows密码,可以使用该模块:

这样,您就不必以明文形式存储密码


查看
请求\u ntlm
如果不向
HttpNtlmAuth
提供密码或密码散列,就无法使用它。您是否考虑过将用户名和密码作为环境变量存储在运行脚本的机器上?这将避免您必须将敏感信息存储在脚本本身中。然后,只有机器管理员可以访问/修改敏感信息

通过
cmd提示符
,设置所需变量(以下语法适用于Windows计算机):

为确保正确设置变量,请在
cmd提示符中键入
set
,查看是否列出了变量

正确设置后,使用python的
os
模块访问变量并根据需要使用:

import os
import requests
from requests_ntlm import HttpNtlmAuth

username = os.environ.get('username')
password = os.environ.get('password')

SITE = "https://sharepointsite.com/"

response = requests.get(SITE, auth=HttpNtlmAuth(username, password))
重要提示:

  • 如果关闭
    cmd提示符
    窗口,您刚才设置的环境变量将被删除,脚本将抛出“我找不到环境变量”错误。要避免这种情况,请在脚本运行时始终保持
    cmd
    窗口打开,或永久设置环境变量(适用于Windows计算机的说明。注意:说明涉及更改
    路径
    环境变量,但您将了解如何创建/修改自己的变量)
  • 注意不要覆盖现有的环境变量。首先,通过列出所有变量(在
    cmd提示符中键入
    SET
    ),再次检查名称是否可用
  • 环境变量存储为字符串

  • 接受的答案仍然使用存储的密码。通过Windows SSPI接口使用集成身份验证的选项如下:

    import requests
    from requests_negotiate_sspi import HttpNegotiateAuth
    
    cert = 'path\to\certificate.cer'
     
    response = requests.get(
        r'http://mysharepoint.com/_api',
        auth=HttpNegotiateAuth(),
        verify=cert)
    
    print(response.status_code)
    

    有关更多信息,请参阅。

    好的-谢谢。我希望在没有我干预的情况下运行此程序,但如果我不希望密码以纯文本形式存储,则可能无法实现。可能是这样,我只是不知道如何实现。我认为下面的响应者不理解“windows身份验证”表示希望Sharepoint服务器从您当前使用的windows工作站获取身份验证。在windows系统上,环境变量不是很安全。任何人都可以查看其他任何人的环境变量,因为它们被卡在系统范围的注册表中。把密码或其他敏感信息放在那里并不是一个好主意。
    import os
    import requests
    from requests_ntlm import HttpNtlmAuth
    
    username = os.environ.get('username')
    password = os.environ.get('password')
    
    SITE = "https://sharepointsite.com/"
    
    response = requests.get(SITE, auth=HttpNtlmAuth(username, password))
    
    import requests
    from requests_negotiate_sspi import HttpNegotiateAuth
    
    cert = 'path\to\certificate.cer'
     
    response = requests.get(
        r'http://mysharepoint.com/_api',
        auth=HttpNegotiateAuth(),
        verify=cert)
    
    print(response.status_code)