Office365-rest-python-client: IndexError: Listenindex außerhalb des Bereichs

Erstellt am 8. Dez. 2020  ·  14Kommentare  ·  Quelle: vgrem/Office365-REST-Python-Client

Lieber Herr,
Könnten Sie mir bitte helfen herauszufinden, warum ich mich nicht mehr mit Sharepoint verbinde?

Mit Version 2.2.2 hat alles gut funktioniert.
Dann trat Problem #272 auf (Beim Abrufen des Tokens aus der XML-Antwort ist ein Fehler aufgetreten: AADSTS500069 ), also habe ich auf 2.3.0.1 aktualisiert.
Nun funktioniert auch folgender Code nicht:
def copy_sharepoint(self,filename=""):
ctx = ClientContext(self.SITE_SHAREPOINT).with_credentials(UserCredential(self.WIN_USER,self.WIN_PASSWORD))
localpath=os.path.join(self.CHEMIN_XLSX ,self.NOM_TIR + '/',self.FICHIER_BI)
self.print_debug("",localpath)
self.print_debug("",self.WIN_PASSWORD)
mit open(localpath, 'rb') als content_file:
file_content = content_file.read()
file = ctx.web.get_folder_by_server_relative_url(self.CHEMIN_SHAREPOINT).upload_file(self.FICHIER_BI, file_content).execute_query()

Traceback (letzter Anruf zuletzt):
Datei "/appli/sopra/tools/tir_bench.py", Zeile 1327, in
tir_bench.copy_sharepoint()
Datei "/appli/sopra/tools/tir_bench.py", Zeile 1278, in copy_sharepoint
file = ctx.web.get_folder_by_server_relative_url(self.CHEMIN_SHAREPOINT).upload_file(self.FICHIER_BI, file_content).execute_query()
Datei "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_object.py", Zeile 30, in execute_query
self.context.execute_query()
Datei "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_runtime_context.py", Zeile 138, in execute_query
self.pending_request().execute_query()
Datei "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_request.py", Zeile 73, in execute_query
self.beforeExecute.notify(Anfrage)
Datei "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/types/EventHandler.py", Zeile 18, in benachrichtigen
Hörer( args, * kwargs)
Datei "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py", Zeile 162, in _build_modification_query
self.ensure_form_digest(Anfrage)
Datei "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py", Zeile 123, in secure_form_digest
self.request_form_digest()
Datei "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py", Zeile 130, in request_form_digest
antwort = self.execute_request_direct(request)
Datei "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_runtime_context.py", Zeile 134, in execute_request_direct
return self.pending_request().execute_request_direct(request)
Datei "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/odata/odata_request.py", Zeile 34, in execute_request_direct
Rückgabe super(ODataRequest, self).execute_request_direct(request)
Datei "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_request.py", Zeile 86, in execute_request_direct
self.context.authenticate_request(request_options)
Datei "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py", Zeile 151, in authenticate_request
self._auth_context.authenticate_request(Anfrage)
Datei "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/authentication_context.py", Zeile 84, in authenticate_request
self._provider.authenticate_request(Anfrage)
Datei "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py", Zeile 73, in authenticate_request
self.ensure_authentication_cookie()

Datei "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py", Zeile 80, in secure_authentication_cookie
self._cached_auth_cookies = self.get_authentication_cookie()
Datei "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py", Zeile 93, in get_authentication_cookie
token = self._acquire_service_token_from_adfs(user_realm.STSAuthUrl)
Datei "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py", Zeile 136, in _acquire_service_token_from_adfs
assertion_node = dom.getElementsByTagNameNS("urn:oasis:names:tc:SAML:1.0:assertion", 'Assertion')[0].toxml()
IndexError: Listenindex außerhalb des Bereichs

Könnten Sie mir bitte bei diesem Problem helfen?

Danke im Voraus,
Guillaume

bug

Alle 14 Kommentare

Hallo,
Außerdem ist hier der Wert von response.content.decode())

http://www.w3.org/2005/08/addressing/soap/faultcfb81633-ff49-4e50-9544-7e39214d7122
<value i="14">s:Sender</value><subcode i="15"><value i="16">a:InvalidSecurity</value></subcode>Beim Überprüfen der Sicherheit der Nachricht ist ein Fehler aufgetreten.

Grüße!

vielen Dank für das ausführliche Log, im Moment fehlt mir die Möglichkeit es gegen SharePoint/ADFS env zu verifizieren.

@wreiner , vielleicht könnten Sie freundlicherweise bestätigen, ob die _federated Authentication_ auf Ihrer Seite für die neueste Version wie erwartet funktioniert?

Hallo allerseits

Ich habe ähnliche Probleme, die folgende Zeile gibt mir eine 400- oder 500-Antwort.

https://github.com/vgrem/Office365-REST-Python-Client/blob/020c8c8176ce2eea3accbe95e2e4372af57ef6c8/office365/runtime/auth/providers/saml_token_provider.py#L133

Falls ich die 400-Antwort erhalte, ist der Körper leer, was zu einer xml.parsers.expat.ExpatError: no element found: line 1, column 0 Ausnahme führt. die 500-Antwort gibt dieselbe Ausnahme wie @guillaume-colas.

Ich habe das Paket noch nicht zum Laufen gebracht, es könnte also gut der Sharepoint-Server sein, aber ich werde versuchen, das Paket herunterzustufen, um sicherzugehen. Wie kann ich sicherstellen, dass die Sharepoint-Authentifizierung richtig eingerichtet ist?

Thx im voraus!

Hallo,

Ich bin nicht an meinem Computer, um vollständig zu analysieren, aber wenn ich die neueste Version mit pip installiere, fehlt die Funktion _acquire_service_token_from_adfs_ von _runtime/auth/providers/saml_token_provider.py_.

In meinem Pull-Request gibt es keine Entfernung dieser Funktion, daher bin ich mir nicht sicher, warum sie fehlt. Auch mein Fix für das Datetime-Format ist nicht in der Datei enthalten. Vielleicht ist beim Zusammenführen ein Fehler aufgetreten?

@wreiner danke für die

Acquire_service_token_from_adfs fehlt

es wurde von öffentlicher auf private Methode umgestaltet.

mein Fix für das Datetime-Format ist nicht in der Datei

das Format sollte so sein, wie es ursprünglich festgeschrieben wurde, aber es wurde ein wenig umgestaltet, um die Deklaration nach sts_profile.py

self.created = now.astimezone(timezone.utc).isoformat('T')[:-9] + 'Z' self.expires = (now + timedelta(minutes=10)).astimezone(timezone.utc).isoformat('T')[:-9] + 'Z'

Aber wenn nach dem Merge etwas fehlt, sollte ich schuld sein.

Hallo allerseits

Ich habe ähnliche Probleme, die folgende Zeile gibt mir eine 400- oder 500-Antwort.

https://github.com/vgrem/Office365-REST-Python-Client/blob/020c8c8176ce2eea3accbe95e2e4372af57ef6c8/office365/runtime/auth/providers/saml_token_provider.py#L133

Falls ich die 400-Antwort erhalte, ist der Körper leer, was zu einer xml.parsers.expat.ExpatError: no element found: line 1, column 0 Ausnahme führt. die 500-Antwort gibt dieselbe Ausnahme wie @guillaume-colas.

Ich habe das Paket noch nicht zum Laufen gebracht, es könnte also gut der Sharepoint-Server sein, aber ich werde versuchen, das Paket herunterzustufen, um sicherzugehen. Wie kann ich sicherstellen, dass die Sharepoint-Authentifizierung richtig eingerichtet ist?

Thx im voraus!

Hallo Mark,

danke für die Bestätigung, es erscheint tatsächlich in der neuesten Version der Verbundauthentifizierung (SharePoint/ADFS) etwas kaputt
Könnten Sie es bitte mit der _vorherigen_ Version ( 2.2.2 ) versuchen?

Ich bin noch nicht vollständig analysiert, aber für meine Änderungen kann ich sagen, dass sie das Sicherheitstoken und das Cookie korrekt zurückgeben, aber die Cookie-Datei enthält kein 'FedAuth'-Feld, das in is_valid_auth_cookies gesucht wird, das jetzt in _get_authentication_cookie verwendet wird.

https://github.com/vgrem/Office365-REST-Python-Client/blob/93325ea33675b86aafc2e6e0fa381c184ce479e7/office365/runtime/auth/providers/saml_token_provider.py#L32

Für föderierte Authentifizierung sehe ich nur SPIODCRL im JAR.

Derzeit kann ich die erhaltenen Authentifizierungsdaten immer noch nicht richtig verwenden, ich recherchiere noch, kann aber nicht sagen, wie lange ich brauche.

Alles in allem kann ich sagen, dass mit der alten Version und meinen Patches noch alles wie erwartet funktioniert, aber leider nicht mit der neuen Version.

Danke für die schnellen Antworten :-)

@vgrem es wird in Version 2.2.2 ein ähnlicher Fehler

Es könnte schön sein, die Ausnahme in eine besser lesbare zu packen.

Ich bin einen Schritt weiter. Es stellte sich heraus, dass ich mein Passwort zurücksetzen musste. Ich treffe jetzt den gleichen Fehler wie @wreiner. Das is_valid_auth_cookies zurück, dass das Cookie nicht gültig ist, da das Wörterbuch nur den SPIODCRL-Schlüssel und keinen FedAuth-Schlüssel enthält. Wenn ich dies nur auskommentiere, prüfe, ob das Cookie gültig ist oder nicht. Ich kann Dateien von Sharepoint herunterladen. Die Authentifizierung scheint also gut zu funktionieren.

Vielleicht versuche ich es mit Version 2.2.2 noch einmal.

Ich habe das gleiche Problem. is_valid_auth_cookies False da kein FedAuth Schlüssel im Cookie-Dikt vorhanden ist. Wenn ich den Rückgabecode kommentiere und die Rückgabe von True vereinfache, funktioniert die Authentifizierung einwandfrei.

def is_valid_auth_cookies(values):
    return True
    # return any(values) and values.get('FedAuth', None) is not None

Hey @hungnguyen95 , danke für die Bestätigung!

Es stellte sich heraus, dass is_valid_auth_cookies angepasst werden muss.

Hallo,
Wird mein Problem durch Ändern von is_valid_auth_cookies behoben?

Ich bin hier ziemlich verloren, tut mir leid. Ich dachte, dass mein Problem in _acquire_service_token_from_adfs liegt.
Haben Sie eine Idee, warum ich die Antwort "Ungültige Sicherheit" und hoffentlich eine Problemumgehung zur Authentifizierung erhalte?

Vielen Dank im Voraus für Ihre Hilfe.
Guillaume

@guillaume-colas Es scheint, dass Ihr Problem wahrscheinlich damit zusammenhängt, dass der Server Ihnen keinen Zugriff zulässt. Sind Sie sicher, dass das Passwort korrekt ist und haben Sie versucht, Ihr Passwort zurückzusetzen? Das Zurücksetzen meines Passworts hat dieses Problem behoben. Danach stieß ich auf das Problem is_valid_auth_cookies .

@mark-boer Ja, ich habe mein Passwort verifiziert und es ist korrekt. Ist es möglich, dass die Authentifizierung mit 2FA (SMS-Code) die Authentifizierung blockiert?

Ist es möglich, ClientCredentials zum Hochladen von Dateien auf Sharepoint zu verwenden?

Vielen Dank im Voraus für Ihre Hilfe

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen