我正在尝试使用使用windows身份验证的sharepoint站点。我可以使用requests
模块访问该站点,但它要求我显式地声明我的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身份验证访问站点,这样我就不需要提供密码了?这似乎可以通过requests_nltm
实现,但我不知道如何实现。
发布于 2014-09-10 13:00:32
如果你不想显式声明你的windows密码,你可以使用getpass
模块:
import requests
from requests_ntlm import HttpNtlmAuth
import getpass
SITE = "https://sharepointsite.com/"
USERNAME = "domain\\user"
response = requests.get(SITE, auth=HttpNtlmAuth(USERNAME, getpass.getpass()))
print response.status_code
这样,您就不必以纯文本形式存储密码。
查看requests_ntlm
的code,如果不向HttpNtlmAuth
提供您的密码或密码的哈希,就无法使用它
发布于 2020-10-16 10:42:09
接受的答案仍然使用存储的密码。通过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)
有关详细信息,请参阅here。
发布于 2016-12-02 14:21:24
您是否考虑过将用户名和密码作为环境变量存储在运行脚本的计算机上?这将使您不必将敏感信息存储在脚本本身中。然后,只有机器的管理员才能访问/修改敏感信息。
通过cmd prompt
设置所需的变量(以下语法用于Windows机):
SET username=domain\\user
SET password=your_password
为了确保您正确地设置了变量,在cmd prompt
中键入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 prompt
窗口,您刚才设置的环境变量将被擦除,并且脚本将抛出“我找不到环境变量”错误。要避免这种情况,请在脚本运行时始终保持cmd
窗口打开,或者永久设置环境变量(用于Windows计算机的说明here。注意:这些说明指的是更改PATH
环境变量,但是您将了解如何创建/修改自己的variables).cmd prompt
).SET
变量存储为stringhttps://stackoverflow.com/questions/25764595
复制相似问题