Office365-rest-python-client: Beim Abrufen von Authentifizierungscookies von https://mycompany.sharepoint.com/sites/documentssite//_vti_bin/idcrl.svc ist ein Fehler aufgetreten

Erstellt am 5. Aug. 2020  ·  3Kommentare  ·  Quelle: vgrem/Office365-REST-Python-Client

Hallo,

Kontext des Problems

Ich arbeite mit der Version 2.1.7.post1 (laut Pip Freeze), kein MFA erforderlich, um sich in Sharepoint einzuloggen.
Ich versuche derzeit, mit dem folgenden Skript (aus der README-Datei des Projekts erstellt) eine Excel-Datei vom Sharepoint des Unternehmens abzurufen:

from office365.runtime.auth.authentication_context import AuthenticationContext
from office365.sharepoint.client_context import ClientContext
from office365.sharepoint.file import File

url = 'https://mycompany.sharepoint.com/sites/documentssite/'

ctx_auth = AuthenticationContext(url)
if ctx_auth.acquire_token_for_user(username, password):
    ctx = ClientContext(url, ctx_auth)
    web = ctx.web
    ctx.load(web)
    ctx.execute_query()
    print("Web title: {0}".format(web.properties['Title']))

Das Ausführen dieses Skripts liefert die folgende Ausgabe:
An error occurred while retrieving auth cookies from https://mycompany.sharepoint.com/sites/documentssite//_vti_bin/idcrl.svc

Einige Details zum Problem

Ich habe beim Ausführen dieses Skripts im Debug-Modus bemerkt, dass das Problem von der Methode acquire_authentication_cookie der Klasse SamlTokenProvider
Tatsächlich wird die Methode mit federated=True aufgerufen, sodass die HTTP-Anfrage unter https://mycompany.sharepoint.com/sites/documentssite//_vti_bin/idcrl.svc mit der HEAD-Methode erfolgt. Unten finden Sie den Teil, bei dem es fehlschlägt:

     def acquire_authentication_cookie(self, security_token, federated=False):
        ...
        else:
            self._auth_cookies['SPOIDCRL'] = None
            session.head(self.__sts_profile.signInPageUrl,
                         headers={
                             'User-Agent': 'Office365 Python Client',
                             'X-IDCRL_ACCEPTED': 't',
                             'Authorization': 'BPOSIDCRL {0}'.format(security_token),
                             'Content-Type': 'application/x-www-form-urlencoded'
                         })
        logger.debug_secrets("session.cookies: %s", session.cookies)
        cookies = requests.utils.dict_from_cookiejar(session.cookies)
        logger.debug_secrets("cookies: %s", cookies)
        if not cookies:
            self.error = "An error occurred while retrieving auth cookies from {0}".format(self.__sts_profile.signInPageUrl)
            logger.error(self.error)
            return False

Die Antwort enthält kein Cookie, deshalb erhalte ich die Fehlermeldung.

Übrigens habe ich das gleiche Problem, als ich die URL auf " https://mycompany.sharepoint.com " gesetzt habe.

Lassen Sie es mich wissen, wenn ich nicht genügend Details zu dem Problem angegeben habe.
Vielen Dank im Voraus !

question

Alle 3 Kommentare

Einige Neuigkeiten zum Thema:

Wenn ich mit curl eine HEAD-Anfrage an https://mycompany.sharepoint.com/sites/documentssite//_vti_bin/idcrl.svc stelle, wurde ich zu https://mycompany.sharepoint.com/_vti_bin/idcrl.svc/ weitergeleitet. (Antwortcode: 307).

Also habe ich eine HEAD-Anfrage an diesen Link gestellt, ich habe eine Antwort "Methode nicht erlaubt" erhalten...
Ich denke, das Problem kommt von der Seite meiner Firma..

Grüße!

Vielen Dank für die gemachten Angaben!

2.1.7.post1 ist im Moment etwas veraltet, könntest du es bitte noch einmal versuchen, aber mit der _neuesten_ Version ( 2.1.10.1 im Moment) könnte es über GitHub heruntergeladen werden:

pip install git+https://github.com/vgrem/Office365-REST-Python-Client.git

oder aus einem alternativen Index

Seitdem wurden einige Bugfixes in Bezug auf die Authentifizierung behoben.

Ich habe die letzte Version installiert und es funktioniert einwandfrei! (Das war eigentlich ganz einfach zu lösen! :) )
Danke für die Hilfe :D

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen