2016-08-08 70 views
2

Ich versuche derzeit, über Python und die Requests-Bibliothek auf die Sharepoint-API zuzugreifen. Nach der Überprüfung der Anfrage über Firebug stellte ich fest, dass es die NTLM-Authentifizierung verwendet, also habe ich das requests_ntlm-Plugin installiert, bekomme aber immer noch einen 401-Fehler.Was genau sollte die Domäne für die NTLM-Authentifizierung sein, wenn die Python-Requests-Bibliothek verwendet wird?

ich auf diesen Beitrag kam, How to access a sharepoint site via the REST API in Python?, wo die Lösung NTLM Auth zu verwenden, ist dies:

requests.get("http://sharepoint-site.com", auth=HttpNtlmAuth('DOMAIN\\USERNAME','PASSWORD')) 

ich nur verwirrt bin, was Domain verweisen soll. Ich nahm an, es wäre nur meine site_url, aber das funktioniert immer noch nicht. Ich habe versucht, es mit zwei Schrägstrichen zu formatieren, wie im Thread gezeigt, aber auch als ein Backslash wie hier referenziert: https://curl.haxx.se/mail/lib-2005-11/0086.html.

Wenn NTLM verwenden, können Sie Domäne durch sie dem Benutzer Namen vorangestellt wird und das Abtrennen des Domain Name und mit einem vorderen (/) oder Backslash (\) gesetzt. So: "domain/user: password" oder "domain \ user: password". Einige HTTP-Server (unter Windows) unterstützen diesen Stil sogar für die Standardauthentifizierung.

import requests 
from requests_ntlm import HttpNtlmAuth 

username = "user" 
password = "pass" 
site_url = "https://sharepoint.site.com/foo/" 
r = requests.get(site_url, auth=HttpNtlmAuth(site_url + username, password) 
print(r.status_code) 

ich es einfach interessant finden, dass es eine explizite Beispiel-URL in der Request.get gibt, sondern gibt nur die willkürliche „DOMAIN“ in dem Auth-Parameter. Das gleiche gilt für die Dokumentation für die Anfrage-NTLM-Bibliothek hier zu sehen: https://github.com/requests/requests-ntlm:

requests.get("http://ntlm_protected_site.com",auth=HttpNtlmAuth('domain\\username','password')) 

Ich vermute, ich habe nur die Syntax für die Benutzername vermasselt, aber ich bin mir nicht ganz sicher, dass das Problem.

Antwort