Office365-rest-python-client: IndexError: daftar indeks di luar jangkauan

Dibuat pada 8 Des 2020  ·  14Komentar  ·  Sumber: vgrem/Office365-REST-Python-Client

Yang terhormat,
Bisakah Anda membantu saya mencari tahu mengapa saya tidak terhubung ke sharepoint lagi?

Dengan versi 2.2.2 semuanya bekerja dengan baik.
Kemudian terjadi masalah #272 (Terjadi kesalahan saat mengambil token dari respons XML: AADSTS500069 ) jadi saya memutakhirkan ke 2.3.0.1.
Sekarang kode berikut juga tidak berfungsi:
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)
dengan open(localpath, 'rb') sebagai content_file:
file_content = konten_file.read()
file = ctx.web.get_folder_by_server_relative_url(self.CHEMIN_SHAREPOINT).upload_file(self.FICHIER_BI, file_content).execute_query()

Traceback (panggilan terakhir terakhir):
File "/appli/sopra/tools/tir_bench.py", baris 1327, di
tir_bench.copy_sharepoint()
File "/appli/sopra/tools/tir_bench.py", baris 1278, di copy_sharepoint
file = ctx.web.get_folder_by_server_relative_url(self.CHEMIN_SHAREPOINT).upload_file(self.FICHIER_BI, file_content).execute_query()
File "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_object.py", baris 30, di execute_query
self.context.execute_query()
File "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_runtime_context.py", baris 138, di execute_query
self.pending_request().execute_query()
File "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_request.py", baris 73, di execute_query
self.beforeExecute.notify(permintaan)
File "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/types/EventHandler.py", baris 18, di notify
pendengar( args, * kwargs)
File "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py", baris 162, di _build_modification_query
self.ensure_form_digest(permintaan)
File "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py", baris 123, di sure_form_digest
self.request_form_digest()
File "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py", baris 130, di request_form_digest
respon = self.execute_request_direct(permintaan)
File "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_runtime_context.py", baris 134, di execute_request_direct
kembalikan self.pending_request().execute_request_direct(permintaan)
File "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/odata/odata_request.py", baris 34, di execute_request_direct
kembalikan super(ODataRequest, self).execute_request_direct(permintaan)
File "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_request.py", baris 86, di execute_request_direct
self.context.authenticate_request(request_options)
File "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py", baris 151, di authenticate_request
self._auth_context.authenticate_request(permintaan)
File "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/authentication_context.py", baris 84, di authenticate_request
self._provider.authenticate_request(permintaan)
File "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py", baris 73, di authenticate_request
self.ensure_authentication_cookie()

File "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py", baris 80, di sure_authentication_cookie
self._cached_auth_cookies = self.get_authentication_cookie()
File "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py", baris 93, di get_authentication_cookie
token = self._acquire_service_token_from_adfs(user_realm.STSauthUrl)
File "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py", baris 136, di _acquire_service_token_from_adfs
assertion_node = dom.getElementsByTagNameNS("urn:oasis:names:tc:SAML:1.0:assertion", 'Assertion')[0].toxml()
IndexError: daftar indeks di luar jangkauan

Bisakah Anda membantu saya dengan masalah itu?

Terima kasih sebelumnya,
Guillaume

bug

Semua 14 komentar

Halo,
Selain itu, inilah nilai 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>Terjadi kesalahan saat memverifikasi keamanan pesan.

Salam pembuka!

terima kasih atas log terperinci, saat ini saya tidak memiliki kemungkinan untuk memverifikasinya terhadap SharePoint/ADFS env.

@wreiner , mungkin Anda bisa mengonfirmasi apakah _federated authentication_ berfungsi seperti yang diharapkan di pihak Anda untuk rilis terbaru?

Halo semuanya

Saya mengalami masalah serupa, baris berikut memberi saya respons 400 atau 500.

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

Jika saya mendapatkan respons 400, badan kosong menghasilkan pengecualian xml.parsers.expat.ExpatError: no element found: line 1, column 0 . respons 500 memberikan pengecualian yang sama dengan @guillaume-colas.

Saya belum mendapatkan paket untuk bekerja, jadi bisa jadi itu adalah server sharepoint, tetapi saya akan mencoba menurunkan versi paket hanya untuk memastikan. Bagaimana saya bisa memastikan bahwa otentikasi sharepoint diatur dengan benar?

Thx sebelumnya!

Hai,

Saya tidak berada di depan komputer untuk menganalisis sepenuhnya tetapi seperti yang saya lihat, ketika saya menginstal versi terbaru dengan pip, fungsi _acquire_service_token_from_adfs_ hilang dari _runtime/auth/providers/saml_token_provider.py_.

Dalam permintaan tarik saya, tidak ada penghapusan fungsi ini, jadi saya tidak yakin mengapa itu hilang. Juga perbaikan saya untuk format datetime tidak ada dalam file. Mungkin ada kesalahan dengan penggabungan?

@wreiner terima kasih telah kembali, mengenai

mengakuisisi_service_token_from_adfs tidak ada

yang telah refactored dari publik ke metode pribadi .

perbaikan saya untuk format datetime tidak ada dalam file

formatnya harus di tempat seperti yang dilakukan pada awalnya, tetapi telah direfactored sedikit dalam hal memindahkan deklarasi ke 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'

Tetapi jika ada sesuatu yang hilang setelah penggabungan, saya yang harus disalahkan.

Halo semuanya

Saya mengalami masalah serupa, baris berikut memberi saya respons 400 atau 500.

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

Jika saya mendapatkan respons 400, badan kosong menghasilkan pengecualian xml.parsers.expat.ExpatError: no element found: line 1, column 0 . respons 500 memberikan pengecualian yang sama dengan @guillaume-colas.

Saya belum mendapatkan paket untuk bekerja, jadi bisa jadi itu adalah server sharepoint, tetapi saya akan mencoba menurunkan versi paket hanya untuk memastikan. Bagaimana saya bisa memastikan bahwa otentikasi sharepoint diatur dengan benar?

Thx sebelumnya!

Hai Markus,

terima kasih atas konfirmasinya, memang muncul di versi terbaru otentikasi federasi (SharePoint/ADFS) agak rusak
Bisakah Anda mencobanya untuk versi _previous_ ( 2.2.2 )?

Saya tidak melalui analisis lengkap tetapi untuk perubahan saya, saya dapat mengatakan mereka mengembalikan token keamanan dan cookie dengan benar tetapi toples cookie tidak berisi bidang 'FedAuth' yang dicari di is_valid_auth_cookies yang sekarang digunakan di _get_authentication_cookie.

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

Untuk auth federasi, saya hanya melihat SPOIDCRL di toples.

Saat ini saya masih tidak dapat menggunakan data autentikasi yang diperoleh dengan benar, saya masih menyelidiki tetapi tidak tahu berapa lama yang saya perlukan.

Secara keseluruhan saya dapat mengatakan bahwa dengan versi lama dan tambalan saya semuanya masih berfungsi dengan baik seperti yang diharapkan tetapi sayangnya tidak dengan versi baru.

Terima kasih atas tanggapan cepatnya :-)

@vgrem mendapatkan kesalahan serupa pada versi 2.2.2, jadi sepertinya itu adalah server sharepoint.

Mungkin bagus untuk membungkus pengecualian menjadi yang lebih mudah dibaca.

Saya selangkah lebih maju. Ternyata saya perlu mengatur ulang kata sandi saya. Saya sekarang mendapatkan kesalahan yang sama dengan @wreiner. is_valid_auth_cookies mengembalikan bahwa cookie tidak valid, karena kamus hanya berisi kunci SPOIDCRL dan tidak ada kunci FedAuth. Jika saya hanya mengomentari ini, periksa apakah cookie itu valid atau tidak. Saya dapat mengunduh file dari sharepoint. Jadi otentikasi tampaknya berfungsi dengan baik.

Mungkin saya akan mencoba versi 2.2.2 lagi.

Saya memiliki masalah yang sama. is_valid_auth_cookies mengembalikan False karena tidak ada kunci FedAuth dalam dict cookie. Jika saya mengomentari kode pengembalian dan menyederhanakan pengembalian True, otentikasi akan berfungsi dengan baik.

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

Hai @hungnguyen95 , terima kasih atas konfirmasinya!

Ternyata is_valid_auth_cookies perlu disesuaikan.

Halo,
Apakah masalah saya akan diperbaiki dengan memodifikasi is_valid_auth_cookies ?

Saya cukup tersesat di sini maaf. Saya pikir masalah saya ada di _acquire_service_token_from_adfs.
Apakah Anda tahu mengapa saya mendapatkan respons 'Keamanan tidak valid' dan semoga ada solusi untuk diautentikasi?

Terima kasih sebelumnya atas bantuan Anda.
Guillaume

@guillaume-colas tampaknya masalah Anda mungkin terkait dengan server yang tidak mengizinkan Anda mengakses. Apakah Anda yakin kata sandinya benar dan apakah Anda sudah mencoba mengatur ulang kata sandi Anda? Menyetel ulang kata sandi saya menyelesaikan masalah ini. Setelah itu saya mengalami masalah is_valid_auth_cookies .

@mark-boer Ya, saya telah memverifikasi kata sandi saya dan itu benar. Apakah mungkin otentikasi dengan 2FA (kode sms) memblokir dari otentikasi?

Apakah mungkin menggunakan ClientCredentials untuk mengunggah file ke sharepoint?

Terima kasih sebelumnya atas bantuan Anda

Apakah halaman ini membantu?
0 / 5 - 0 peringkat