Office365-rest-python-client: IndexError: índice da lista fora do intervalo

Criado em 8 dez. 2020  ·  14Comentários  ·  Fonte: vgrem/Office365-REST-Python-Client

Caro senhor,
Você poderia me ajudar a descobrir por que não estou mais conectando ao Sharepoint?

Com a versão 2.2.2 tudo estava funcionando bem.
Em seguida, ocorreu o problema # 272 (ocorreu um erro ao recuperar o token da resposta XML: AADSTS500069), então eu atualizei para 2.3.0.1.
Agora, o código a seguir também não 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 ("", localpath)
self.print_debug ("", self.WIN_PASSWORD)
com 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 ()

Traceback (última chamada mais recente):
Arquivo "/appli/sopra/tools/tir_bench.py", linha 1327, em
tir_bench.copy_sharepoint ()
Arquivo "/appli/sopra/tools/tir_bench.py", linha 1278, em copy_sharepoint
file = ctx.web.get_folder_by_server_relative_url (self.CHEMIN_SHAREPOINT) .upload_file (self.FICHIER_BI, file_content) .execute_query ()
Arquivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_object.py", linha 30, em execute_query
self.context.execute_query ()
Arquivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_runtime_context.py", linha 138, em execute_query
self.pending_request (). execute_query ()
Arquivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_request.py", linha 73, em execute_query
self.beforeExecute.notify (solicitação)
Arquivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/types/EventHandler.py", linha 18, em notificação
ouvinte ( args, * kwargs)
Arquivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py", linha 162, em _build_modification_query
self.ensure_form_digest (solicitação)
Arquivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py", linha 123, em verify_form_digest
self.request_form_digest ()
Arquivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py", linha 130, em request_form_digest
resposta = self.execute_request_direct (pedido)
Arquivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_runtime_context.py", linha 134, em execute_request_direct
return self.pending_request (). execute_request_direct (request)
Arquivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/odata/odata_request.py", linha 34, em execute_request_direct
return super (ODataRequest, self) .execute_request_direct (request)
Arquivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_request.py", linha 86, em execute_request_direct
self.context.authenticate_request (request_options)
Arquivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py", linha 151, em authenticate_request
self._auth_context.authenticate_request (solicitação)
Arquivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/authentication_context.py", linha 84, em authenticate_request
self._provider.authenticate_request (solicitação)
Arquivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py", linha 73, em authenticate_request
self.ensure_authentication_cookie ()

Arquivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py", linha 80, em garantir_authentication_cookie
self._cached_auth_cookies = self.get_authentication_cookie ()
Arquivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py", linha 93, em get_authentication_cookie
token = self._acquire_service_token_from_adfs (user_realm.STSAuthUrl)
Arquivo "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py", linha 136, em _acquire_service_token_from_adfs
assertion_node = dom.getElementsByTagNameNS ("urn: oasis: names: tc: SAML: 1.0: assertion", 'Assertion') [0] .toxml ()
IndexError: índice da lista fora do intervalo

Você poderia me ajudar com esse problema?

Desde já, obrigado,
Guillaume

bug

Todos 14 comentários

Olá,
Além disso, aqui está o 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>Ocorreu um erro ao verificar a segurança da mensagem.

Saudações!

obrigado pelo log detalhado, no momento não tenho qualquer possibilidade de verificá-lo no ambiente SharePoint / ADFS.

@wreiner , talvez você possa confirmar se a _autenticação federada_ está funcionando conforme o esperado para a versão mais recente.

Olá a todos

Estou tendo problemas semelhantes, a linha a seguir me dá uma resposta 400 ou 500.

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

No caso de eu obter a resposta 400, o corpo está vazio, resultando em uma exceção xml.parsers.expat.ExpatError: no element found: line 1, column 0 . a resposta 500 dá a mesma exceção que @guillaume-colas.

Ainda não fiz o pacote funcionar, então pode muito bem ser o servidor do sharepoint, mas tentarei fazer o downgrade do pacote apenas para ter certeza. Como posso garantir que a autenticação do sharepoint está configurada corretamente?

Obrigado antecipadamente!

Oi,

Não estou em meu computador para analisar totalmente, mas a meu ver, quando instalo a versão mais recente com pip, a função _acquire_service_token_from_adfs_ está ausente em _runtime / auth / supplies / saml_token_provider.py_.

Em minha solicitação de pull, não há remoção dessa função, então não tenho certeza de por que ela está faltando. Além disso, minha correção para o formato de data e hora não está no arquivo. Talvez tenha ocorrido um erro na mesclagem?

@wreiner obrigado por voltar, a respeito

adquirir_service_token_from_adfs ausente

foi refatorado de método público para método privado .

minha correção para o formato de data e hora não está no arquivo

o formato deve estar em vigor como foi confirmado originalmente, mas foi refatorado um pouco em termos de mover a declaração para 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'

Mas se algo estiver faltando após a fusão, eu devo ser o culpado.

Olá a todos

Estou tendo problemas semelhantes, a linha a seguir me dá uma resposta 400 ou 500.

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

No caso de eu obter a resposta 400, o corpo está vazio, resultando em uma exceção xml.parsers.expat.ExpatError: no element found: line 1, column 0 . a resposta 500 dá a mesma exceção que @guillaume-colas.

Ainda não fiz o pacote funcionar, então pode muito bem ser o servidor do sharepoint, mas tentarei fazer o downgrade do pacote apenas para ter certeza. Como posso garantir que a autenticação do sharepoint está configurada corretamente?

Obrigado antecipadamente!

Olá Mark,

obrigado por confirmá-lo, ele de fato aparece na última versão de autenticação federada (SharePoint / ADFS) um tanto quebrado
Você poderia tentar a versão _anterior_ ( 2.2.2 )?

Não terminei a análise completa, mas quanto às minhas alterações, posso dizer que elas retornam o token de segurança e o cookie corretamente, mas o cookie jar não contém um campo 'FedAuth' que é procurado em is_valid_auth_cookies que agora está sendo usado em _get_authentication_cookie.

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

Para autenticação federada, vejo apenas SPOIDCRL no jar.

Atualmente ainda não consigo usar os dados de autenticação obtidos corretamente. Ainda estou investigando, mas não posso dizer quanto tempo vou precisar.

Em suma, posso dizer que com a versão antiga e meus patches tudo ainda funciona bem como esperado, mas infelizmente não com a nova versão.

Obrigado pelas respostas rápidas :-)

@vgrem obtém um erro semelhante na versão 2.2.2, então parece ser o servidor do sharepoint.

Pode ser bom agrupar a exceção em uma mais legível.

Estou um passo adiante. Acontece que eu precisava redefinir minha senha. Agora estou recebendo o mesmo erro que @wreiner. O is_valid_auth_cookies retorna que o cookie não é válido, pois o dicionário contém apenas a chave SPOIDCRL e nenhuma chave FedAuth. Se eu apenas comentar, verifique se o cookie é válido ou não. Consigo baixar arquivos do sharepoint. Portanto, a autenticação parece funcionar bem.

Talvez tente a versão 2.2.2 novamente.

Eu tenho o mesmo problema. is_valid_auth_cookies return False por causa de nenhuma chave FedAuth nos cookies dict. Se eu comentar o código de retorno e simplificar o retorno para True, a autenticação funcionará bem.

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

Ei @ hungnguyen95 , obrigado por confirmar!

Acontece que is_valid_auth_cookies precisa ser ajustado.

Olá,
Meu problema será corrigido modificando is_valid_auth_cookies?

Estou muito perdido aqui, desculpe. Achei que meu problema estava em _acquire_service_token_from_adfs.
Você tem alguma ideia de por que estou recebendo a resposta 'Segurança inválida' e, com sorte, uma solução alternativa para ser autenticado?

Agradeço antecipadamente por sua ajuda.
Guillaume

@guillaume-colas, parece que seu problema está provavelmente relacionado ao servidor não permitir seu acesso. Tem certeza de que a senha está correta e já tentou redefinir sua senha? Redefinir minha senha resolveu esse problema. Depois disso, encontrei o problema is_valid_auth_cookies .

@ mark-boer Sim, verifiquei minha senha e ela está correta. É possível que a autenticação com 2FA (código sms) esteja bloqueando a autenticação?

É possível usar ClientCredentials para fazer upload de arquivos para o sharepoint?

Agradeço antecipadamente por sua ajuda

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

Bachatero picture Bachatero  ·  3Comentários

haimat picture haimat  ·  5Comentários

liuliqiu picture liuliqiu  ·  7Comentários

erfannariman picture erfannariman  ·  6Comentários

domdinicola picture domdinicola  ·  4Comentários