2014-09-10 5 views
2

Я пытаюсь работать с сайтом sharepoint, использующим мою проверку подлинности Windows. Я могу использовать модуль requests для доступа к сайту, но для этого я должен явно указать свой пароль для Windows.Доступ к сайту sharepoint в python с проверкой подлинности 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, но я не могу разобраться, как это сделать.

+0

Я думаю, что ответчики ниже не понимают, что «проверка подлинности Windows» означает, что требуется сервер Sharepoint подобрать аутентификацию от рабочей станции окна, которые вы используете. – vy32

ответ

1

Если вы не хотите, чтобы явно указать ваши окна пароль можно использовать 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 

Таким образом, вам не нужно хранить вам пароль в виде простого текста.

Глядя на code для requests_ntlm не существует способ, чтобы использовать его без ввода пароля или хэш пароля для HttpNtlmAuth

+0

OK - спасибо. Я надеялся, что этот запуск будет выполнен без моего вмешательства, но предположим, что это может быть невозможно, если я не хочу, чтобы пароль хранился в текстовом формате. –

+0

Возможно, я просто не знаю, как это сделать. – Noelkd

-2

Рассматривали ли вы хранить имя пользователя и пароль в качестве переменной окружения на машине который запускает скрипт? Это не позволит вам хранить конфиденциальную информацию в самом скрипте. Тогда только администратор машины может получить доступ/модифицировать конфиденциальную информацию.

Через cmd prompt задайте нужные переменные (ниже синтаксис для машины Windows):

SET username=domain\\user 
SET password=your_password 

Чтобы вы правильно установить переменные, тип SET в cmd prompt и посмотреть, если переменные перечислены ,

После правильно, а затем использовать 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 окно переменных среды, вас просто set будет удален, и ваш скрипт выведет ошибку «Я не могу найти переменные среды». Чтобы этого избежать, либо всегда держите окно cmd открытым во время выполнения сценария, либо постоянно устанавливайте переменные среды (инструкции here для машин Windows. Примечание: инструкции относятся к изменению переменной среды PATH, но вы получите представление о том, как создавать/изменять собственные переменные).
  2. Будьте внимательны, чтобы не перезаписывать существующую переменную среды. Сначала дважды проверьте, что имя доступно, перечисляя все переменные (тип SET - cmd prompt).
  3. Переменные среды сохраняются в виде строки
+2

В системных средах Windows переменные не очень безопасны.любой может просматривать любые другие переменные среды, поскольку они застряли в системном реестре. На самом деле не стоит вводить пароли или другую конфиденциальную информацию. – FistOfFury

Смежные вопросы