[英]Accessing sharepoint site in python with windows authentication
我正在嘗試使用使用我的 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
但我不知道怎么做。
如果您不想明確說明您的 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
的代碼,如果不向HttpNtlmAuth
提供您的密碼或密碼的哈希值,就無法使用它
接受的答案仍然使用存儲的密碼。 通過 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)
請參閱此處了解更多信息。
您是否考慮過將您的用戶名和密碼作為環境變量存儲在運行腳本的機器上? 這將防止您必須將敏感信息存儲在腳本本身中。 然后只有機器的管理員才能訪問/修改敏感信息。
通過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 機器的說明在這里。注意:說明指的是更改PATH
環境變量,但您將了解如何創建/修改您自己的變量)。cmd prompt
鍵入SET
)來仔細檢查名稱是否可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.