使用windows身份验证在python中访问sharepoint站点

2024-05-20 17:33:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用使用我的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实现的,但我不知道如何实现。


Tags: 模块import身份验证声明密码站点网站response
2条回答

您是否考虑过将用户名和密码作为环境变量存储在运行脚本的计算机上?这将使您不必将敏感信息存储在脚本本身中。只有机器的管理员才能访问/修改敏感信息。

通过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))

重要提示:

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

如果不想显式地声明windows密码,可以使用^{}模块:

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_ntlmcode没有办法在不向HttpNtlmAuth提供密码或密码哈希的情况下使用它

相关问题 更多 >