Office365-rest-python-client: IndexError: índice de lista fuera de rango

Creado en 8 dic. 2020  ·  14Comentarios  ·  Fuente: vgrem/Office365-REST-Python-Client

Estimado señor,
¿Podrías ayudarme a averiguar por qué ya no me conecto a Sharepoint?

Con la versión 2.2.2 todo funcionaba bien.
Luego ocurrió el problema # 272 (se produjo un error al recuperar el token de la respuesta XML: AADSTS500069), así que actualicé a 2.3.0.1.
Ahora el siguiente código tampoco funciona:
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 ("", ruta local)
self.print_debug ("", self.WIN_PASSWORD)
con open (localpath, 'rb') como 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 ()

Rastreo (llamadas recientes más última):
Archivo "/appli/sopra/tools/tir_bench.py", línea 1327, en
tir_bench.copy_sharepoint ()
Archivo "/appli/sopra/tools/tir_bench.py", línea 1278, en copy_sharepoint
file = ctx.web.get_folder_by_server_relative_url (self.CHEMIN_SHAREPOINT) .upload_file (self.FICHIER_BI, file_content) .execute_query ()
Archivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_object.py", línea 30, en execute_query
self.context.execute_query ()
Archivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_runtime_context.py", línea 138, en execute_query
self.pending_request (). execute_query ()
Archivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_request.py", línea 73, en execute_query
self.beforeExecute.notify (solicitud)
Archivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/types/EventHandler.py", línea 18, en notificar
oyente (argumentos , * kwargs)
Archivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py", línea 162, en _build_modification_query
self.ensure_form_digest (solicitud)
Archivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py", línea 123, en secure_form_digest
self.request_form_digest ()
Archivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py", línea 130, en request_form_digest
respuesta = self.execute_request_direct (solicitud)
Archivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_runtime_context.py", línea 134, en execute_request_direct
return self.pending_request (). execute_request_direct (solicitud)
Archivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/odata/odata_request.py", línea 34, en execute_request_direct
return super (ODataRequest, self) .execute_request_direct (solicitud)
Archivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_request.py", línea 86, en execute_request_direct
self.context.authenticate_request (request_options)
Archivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py", línea 151, en authenticate_request
self._auth_context.authenticate_request (solicitud)
Archivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/authentication_context.py", línea 84, en authenticate_request
self._provider.authenticate_request (solicitud)
Archivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py", línea 73, en authenticate_request
self.ensure_authentication_cookie ()

Archivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py", línea 80, en secure_authentication_cookie
self._cached_auth_cookies = self.get_authentication_cookie ()
Archivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py", línea 93, en get_authentication_cookie
token = self._acquire_service_token_from_adfs (user_realm.STSAuthUrl)
Archivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py", línea 136, en _acquire_service_token_from_adfs
nodo_afirmación = dom.getElementsByTagNameNS ("urn: oasis: nombres: tc: SAML: 1.0: aserción", 'Aserción') [0] .toxml ()
IndexError: índice de lista fuera de rango

¿Podrías ayudarme con ese problema?

Gracias por adelantado,
Guillaume

bug

Todos 14 comentarios

Hola,
Además, aquí está el valor de 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>Se produjo un error al verificar la seguridad del mensaje.

¡Saludos!

gracias por el registro detallado, en este momento no tengo la posibilidad de verificarlo con el entorno de SharePoint / ADFS.

@wreiner , ¿quizás podría confirmar amablemente si la _autenticación federada_ está funcionando como se esperaba de su lado para la última versión?

Hola a todos

Tengo problemas similares, la siguiente línea me da una respuesta de 400 o 500.

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

En caso de que obtenga la respuesta 400, el cuerpo está vacío, lo que da como resultado una excepción xml.parsers.expat.ExpatError: no element found: line 1, column 0 . la respuesta 500 da la misma excepción que @ guillaume-colas.

Todavía no he conseguido que el paquete funcione, por lo que bien podría ser el servidor sharepoint, pero intentaré degradar el paquete solo para estar seguro. ¿Cómo puedo asegurarme de que la autenticación de sharepoint esté configurada correctamente?

¡Gracias de antemano!

Hola,

No estoy en mi computadora para analizar completamente, pero como lo veo, cuando instalo la última versión con pip, la función _acquire_service_token_from_adfs_ falta en _runtime / auth / Suppliers / saml_token_provider.py_.

En mi solicitud de extracción no se elimina esta función, por lo que no estoy seguro de por qué falta. Además, mi solución para el formato de fecha y hora no está en el archivo. ¿Quizás hubo un error con la fusión?

@wreiner gracias por volver, con respecto a

No se ha adquirido_service_token_from_adfs

se ha refactorizado del método público al privado .

mi corrección para el formato de fecha y hora no está en el archivo

el formato debe estar en su lugar como se comprometió originalmente, pero se ha refactorizado un poco en términos de mover la declaración a 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'

Pero si falta algo después de la fusión, se me debe culpar.

Hola a todos

Tengo problemas similares, la siguiente línea me da una respuesta de 400 o 500.

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

En caso de que obtenga la respuesta 400, el cuerpo está vacío, lo que da como resultado una excepción xml.parsers.expat.ExpatError: no element found: line 1, column 0 . la respuesta 500 da la misma excepción que @ guillaume-colas.

Todavía no he conseguido que el paquete funcione, por lo que bien podría ser el servidor sharepoint, pero intentaré degradar el paquete solo para estar seguro. ¿Cómo puedo asegurarme de que la autenticación de sharepoint esté configurada correctamente?

¡Gracias de antemano!

Hola, Mark,

gracias por confirmarlo, de hecho aparece en la última versión la autenticación federada (SharePoint / ADFS) algo rota
¿Podría intentarlo con la versión _previous_ ( 2.2.2 )?

No he realizado un análisis completo, pero para mis cambios puedo decir que devuelven el token de seguridad y la cookie correctamente, pero el tarro de cookies no contiene un campo 'FedAuth' que se busca en is_valid_auth_cookies que ahora se está utilizando en _get_authentication_cookie.

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

Para la autenticación federada, solo veo SPOIDCRL en el jar.

Actualmente, todavía no puedo usar los datos de autenticación obtenidos correctamente, todavía estoy investigando, pero no puedo decir cuánto tiempo necesitaré.

En general, puedo decir que con la versión anterior y mis parches todo sigue funcionando bien como se esperaba, pero desafortunadamente no con la nueva versión.

Gracias por las rápidas respuestas :-)

@vgrem obtiene un error similar en la versión 2.2.2, por lo que parece ser el servidor sharepoint.

Sería bueno envolver la excepción en una más legible.

Estoy un paso más allá. Resulta que necesitaba restablecer mi contraseña. Ahora tengo el mismo error que @wreiner. is_valid_auth_cookies devuelve que la cookie no es válida, porque el diccionario solo contiene la clave SPOIDCRL y no la clave FedAuth. Si solo comento esto, verifique si la cookie es válida o no. Puedo descargar archivos desde sharepoint. Entonces, la autenticación parece funcionar bien.

Quizás vuelva a intentar la versión 2.2.2.

Tengo el mismo problema. is_valid_auth_cookies return False porque no hay clave FedAuth en el dictado de cookies. Si comento el código de retorno y simplifico el retorno True, la autenticación funcionará bien.

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

Hola @ hungnguyen95 , ¡gracias por confirmarlo!

Resulta que is_valid_auth_cookies necesita ser ajustado.

Hola,
¿Mi problema se solucionará modificando is_valid_auth_cookies?

Estoy bastante perdido aquí, lo siento. Pensé que mi problema estaba en _acquire_service_token_from_adfs.
¿Tiene alguna idea de por qué recibo la respuesta "Seguridad no válida" y, con suerte, una solución para autentificarme?

Gracias de antemano por tu ayuda.
Guillaume

@ guillaume-colas parece que su problema probablemente esté relacionado con el servidor que no le permite el acceso. ¿Está seguro de que la contraseña es correcta y ha intentado restablecerla? Restablecer mi contraseña resolvió este problema. Después de lo cual me encontré con el problema is_valid_auth_cookies .

@ mark-boer Sí, he verificado mi contraseña y es correcta. ¿Es posible que la autenticación con 2FA (código sms) esté bloqueando la autenticación?

¿Es posible utilizar ClientCredentials para cargar archivos en sharepoint?

Gracias de antemano por tu ayuda

¿Fue útil esta página
0 / 5 - 0 calificaciones