簡體   English   中英

使用 Windows 身份驗證訪問 python 中的共享點站點

[英]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))

重要筆記:

  1. 如果關閉cmd prompt窗口,您剛剛設置的環境變量將被刪除,您的腳本將拋出“我找不到環境變量”錯誤。 為避免這種情況,要么在腳本運行時始終保持cmd窗口打開,要么永久設置環境變量(Windows 機器的說明在這里。注意:說明指的是更改PATH環境變量,但您將了解如何創建/修改您自己的變量)。
  2. 注意不要覆蓋現有的環境變量。 首先通過列出所有變量(在cmd prompt鍵入SET )來仔細檢查名稱是否可用。
  3. 環境變量存儲為字符串

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM