κ·νμκ²,
λ μ΄μ μ
°μ΄ν¬μΈνΈμ μ°κ²°νμ§ μλ μ΄μ λ₯Ό μμλ΄λλ‘ λμμ£Όμκ² μ΅λκΉ?
λ²μ 2.2.2μμλ λͺ¨λ κ²μ΄ μ μλνμ΅λλ€.
κ·Έλ° λ€μ λ¬Έμ #272(XML μλ΅μμ ν ν° κ²μ μ€ μ€λ₯ λ°μ: AADSTS500069)κ° λ°μνμ¬ 2.3.0.1λ‘ μ
κ·Έλ μ΄λνμ΅λλ€.
μ΄μ λ€μ μ½λλ μλνμ§ μμ΅λλ€.
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)
open(localpath, 'rb')λ₯Ό content_fileλ‘ μ¬μ©:
file_content = content_file.read()
νμΌ = ctx.web.get_folder_by_server_relative_url(self.CHEMIN_SHAREPOINT).upload_file(self.FICHIER_BI, file_content).execute_query()
μμΆμ (κ°μ₯ μ΅κ·Ό νΈμΆ λ§μ§λ§):
νμΌ "/appli/sopra/tools/tir_bench.py", λΌμΈ 1327,
tir_bench.copy_sharepoint()
copy_sharepointμ νμΌ "/appli/sopra/tools/tir_bench.py", 1278ν
νμΌ = ctx.web.get_folder_by_server_relative_url(self.CHEMIN_SHAREPOINT).upload_file(self.FICHIER_BI, file_content).execute_query()
νμΌ "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_object.py", 30ν, execute_query
self.context.execute_query()
νμΌ "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_runtime_context.py", 138ν, execute_query
self.pending_request().execute_query()
νμΌ "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_request.py", 73ν, execute_query
self.beforeExecute.notify(μμ²)
νμΌ "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/types/EventHandler.py", 18ν, μλ¦Ό
리μ€λ( args, * kwargs)
νμΌ "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py", 162ν, _build_modification_query
self.ensure_form_digest(μμ²)
νμΌ "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py", 123ν,sure_form_digest
self.request_form_digest()
request_form_digestμ νμΌ "/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py", 130ν
μλ΅ = self.execute_request_direct(μμ²)
νμΌ "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_runtime_context.py", 134ν, execute_request_direct
λ°ν self.pending_request().execute_request_direct(μμ²)
νμΌ "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/odata/odata_request.py", 34ν, execute_request_direct
return super(ODataRequest, self).execute_request_direct(μμ²)
νμΌ "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/client_request.py", 86ν, execute_request_direct
self.context.authenticate_request(μμ²_μ΅μ
)
"/home/benchsp/.local/lib/python3.9/site-packages/office365/sharepoint/client_context.py" νμΌ, 151ν, μΈμ¦ μμ²
self._auth_context.authenticate_request(μμ²)
νμΌ "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/authentication_context.py", 84ν, authenticate_request
self._provider.authenticate_request(μμ²)
νμΌ "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py", 73ν, authenticate_request
self.ensure_authentication_cookie()
νμΌ "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py", 80ν,sure_authentication_cookie
self._cached_auth_cookies = self.get_authentication_cookie()
νμΌ "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py", 93ν, get_authentication_cookie
ν ν° = self._acquire_service_token_from_adfs(user_realm.STSAuthUrl)
νμΌ "/home/benchsp/.local/lib/python3.9/site-packages/office365/runtime/auth/providers/saml_token_provider.py", 136ν, _acquire_service_token_from_adfs
assertion_node = dom.getElementsByTagNameNS("urn:oasis:names:tc:SAML:1.0:assertion", 'μ΄μ€μ
')[0].toxml()
IndexError: λͺ©λ‘ μΈλ±μ€κ° λ²μλ₯Ό λ²μ΄λ¬μ΅λλ€.
κ·Έ λ¬Έμ λ₯Ό λμμ£Όμκ² μ΅λκΉ?
미리 κ°μ¬λ립λλ€.
κΈ°μ€
μλ
νμΈμ,
λν λ€μμ response.content.decode())μ κ°μ
λλ€.
<value i="14">s:Sender</value><subcode i="15"><value i="16">a:InvalidSecurity</value></subcode>
μΈμ¬λ§!
SharePoint/ADFS νκ²½μ λν΄ νμΈν κ°λ₯μ±μ΄ μλ νμ¬λ‘μλ μμΈν λ‘κ·Έμ κ°μ¬λ립λλ€.
@wreinerλ , _federated authentication_μ΄ μ΅μ 릴리μ€μμ μμλλ‘ μλνλμ§ μΉμ νκ² νμΈν΄ μ£Όμκ² μ΅λκΉ?
μλ νμΈμ μ¬λ¬λΆ
λΉμ·ν λ¬Έμ κ° μμ΅λλ€. λ€μ μ€μ 400 λλ 500 μλ΅μ μ 곡ν©λλ€.
400 μλ΅μ λ°λ κ²½μ° λ³Έλ¬Έμ΄ λΉμ΄ μμ΄ xml.parsers.expat.ExpatError: no element found: line 1, column 0
μμΈκ° λ°μν©λλ€. 500 μλ΅μ @guillaume-colasμ λμΌν μμΈλ₯Ό μ 곡ν©λλ€.
μμ§ ν¨ν€μ§κ° μλνμ§ μμμΌλ―λ‘ κ³΅μ μλ²μΌ μ μμ§λ§ νμ€ν νκΈ° μν΄ ν¨ν€μ§λ₯Ό λ€μ΄κ·Έλ μ΄λνλ €κ³ ν©λλ€. μ °μ΄ν¬μΈνΈ μΈμ¦μ΄ μ¬λ°λ₯΄κ² μ€μ λμλμ§ μ΄λ»κ² νμΈν μ μμ΅λκΉ?
미리 ν‘!
μλ νμΈμ,
λλ μμ ν λΆμνκΈ° μν΄ λ΄ μ»΄ν¨ν°μ μμ§ μμ§λ§ λ΄κ° λ³Ό μ μλ―μ΄ pipλ‘ μ΅μ λ²μ μ μ€μΉν λ _runtime/auth/providers/saml_token_provider.py_μμ _acquire_service_token_from_adfs_ κΈ°λ₯μ΄ λλ½λμμ΅λλ€.
λ΄ pull μμ²μλ μ΄ κΈ°λ₯μ΄ μ κ±°λμ§ μμμΌλ―λ‘ μ λλ½λμλμ§ μ λͺ¨λ₯΄κ² μ΅λλ€. λν datetime νμμ λν μμ μ¬νμ νμΌμ μμ΅λλ€. λ³ν©μ μ€λ₯κ° μμλ κ²μ μλκΉμ?
@wreiner λ€μ
Acquire_service_token_from_adfsκ° λλ½λμμ΅λλ€.
곡κ°μμ λΉκ³΅κ° λ‘ λ¦¬ν©ν λ§λμμ΅λλ€.
datetime νμμ λν μμ μ¬νμ΄ νμΌμ μμ΅λλ€.
νμμ μλ 컀λ°λ λλ‘ μ μ리μ μμ΄μΌ νμ§λ§ μ μΈμ 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'
κ·Έλ¬λ λ³ν© ν 무μΈκ°κ° λλ½λλ©΄ λΉλλ°μμΌ ν©λλ€.
μλ νμΈμ μ¬λ¬λΆ
λΉμ·ν λ¬Έμ κ° μμ΅λλ€. λ€μ μ€μ 400 λλ 500 μλ΅μ μ 곡ν©λλ€.
400 μλ΅μ λ°λ κ²½μ° λ³Έλ¬Έμ΄ λΉμ΄ μμ΄
xml.parsers.expat.ExpatError: no element found: line 1, column 0
μμΈκ° λ°μν©λλ€. 500 μλ΅μ @guillaume-colasμ λμΌν μμΈλ₯Ό μ 곡ν©λλ€.μμ§ ν¨ν€μ§κ° μλνμ§ μμμΌλ―λ‘ κ³΅μ μλ²μΌ μ μμ§λ§ νμ€ν νκΈ° μν΄ ν¨ν€μ§λ₯Ό λ€μ΄κ·Έλ μ΄λνλ €κ³ ν©λλ€. μ °μ΄ν¬μΈνΈ μΈμ¦μ΄ μ¬λ°λ₯΄κ² μ€μ λμλμ§ μ΄λ»κ² νμΈν μ μμ΅λκΉ?
미리 ν‘!
μλ λ§ν¬,
νμΈν΄ μ£Όμ
μ κ°μ¬ν©λλ€. μ€μ λ‘ μ΅μ λ²μ μ μ°ν© μΈμ¦(SharePoint/ADFS)μμ λ€μ κΉ¨μ§ κ²μΌλ‘ λνλ©λλ€.
_μ΄μ _ λ²μ ( 2.2.2
)μ μ¬μ©ν΄ 보μκ² μ΅λκΉ?
μμ ν λΆμμ μλμ§λ§ λ³κ²½ μ¬νμ λν΄ λ³΄μ ν ν°κ³Ό μΏ ν€λ₯Ό μ¬λ°λ₯΄κ² λ°ννλ€κ³ λ§ν μ μμ§λ§ μΏ ν€ νμ리μλ νμ¬ _get_authentication_cookieμμ μ¬μ© μ€μΈ is_valid_auth_cookiesμμ μ°Ύλ 'FedAuth' νλκ° μμ΅λλ€.
μ°ν© μΈμ¦μ κ²½μ° νμ리μ SPOIDCRLλ§ νμλ©λλ€.
νμ¬ λλ μ¬μ ν νλν μΈμ¦ λ°μ΄ν°λ₯Ό μ¬λ°λ₯΄κ² μ¬μ©ν μ μμΌλ©°, μ¬μ ν μ‘°μ¬ μ€μ΄μ§λ§ μΌλ§λ μ€λ νμν μ§ μ μ μμ΅λλ€.
λμ²΄λ‘ λλ μ΄μ λ²μ κ³Ό λ΄ ν¨μΉλ‘ λͺ¨λ κ²μ΄ μ¬μ ν μμλλ‘ μ μλνμ§λ§ λΆννλ μ λ²μ μμλ κ·Έλ μ§ μλ€κ³ λ§ν μ μμ΅λλ€.
λΉ λ₯Έ λ΅λ³ κ°μ¬ν©λλ€ :-)
@vgrem λ²μ 2.2.2μμλ λΉμ·ν μ€λ₯κ° λ°μνλ―λ‘ κ³΅μ μ μλ²μΈ κ² κ°μ΅λλ€.
μμΈλ₯Ό λ μ½κΈ° μ¬μ΄ κ²μΌλ‘ λννλ κ²μ΄ μ’μ μ μμ΅λλ€.
λλ ν κ±Έμ λ λμκ°λ€. λΉλ°λ²νΈλ₯Ό μ¬μ€μ ν΄μΌ νλ κ²μΌλ‘ λνλ¬μ΅λλ€. μ΄μ @wreinerμ λμΌν μ€λ₯κ° λ°μν©λλ€. is_valid_auth_cookies
λ μ¬μ μ SPOIDCRL ν€λ§ ν¬ν¨νκ³ FedAuth ν€λ ν¬ν¨νμ§ μκΈ° λλ¬Έμ μΏ ν€κ° μ ν¨νμ§ μμμ λ°νν©λλ€. μ΄ μΏ ν€κ° μ ν¨νμ§ μ¬λΆλ₯Ό νμΈνκΈ°λ§ νλ©΄ μ£Όμ μ²λ¦¬λ©λλ€. μ
°μ΄ν¬μΈνΈμμ νμΌμ λ€μ΄λ‘λν μ μμ΅λλ€. κ·Έλμ μΈμ¦μ΄ μ λλ κ² κ°μ΅λλ€.
μλ§λ λ²μ 2.2.2λ₯Ό λ€μ μλν κ²μ λλ€.
κ°μ λ¬Έμ κ° μμ΅λλ€. is_valid_auth_cookies
λ μΏ ν€ μ¬μ μ FedAuth
ν€κ° μκΈ° λλ¬Έμ False
is_valid_auth_cookies
λ°νν©λλ€. λ°ν μ½λμ μ£Όμμ λ¬κ³ λ°ν Trueλ₯Ό λ¨μννλ©΄ μΈμ¦μ΄ μ λλ‘ μλν©λλ€.
def is_valid_auth_cookies(values):
return True
# return any(values) and values.get('FedAuth', None) is not None
μλ νμΈμ @hungnguyen95 , νμΈν΄μ£Όμ μ κ°μ¬ν©λλ€!
is_valid_auth_cookies
μ μ‘°μ ν΄μΌ ν©λλ€.
μλ
νμΈμ,
is_valid_auth_cookies λ₯Ό μμ νλ©΄ λ¬Έμ κ° ν΄κ²°λ©λκΉ?
λλ μ¬κΈ°μ κ½€ κΈΈμ μμμ΅λλ€. μ£μ‘ν©λλ€. λ΄ λ¬Έμ κ° _acquire_service_token_from_adfsμ μλ€κ³ μκ°νμ΅λλ€.
μ λ΄κ° 'μλͺ»λ 보μ'μ΄λΌλ μλ΅μ λ°κ³ μΈμ¦μ λ°κΈ° μν ν΄κ²° λ°©λ²μ μκ³ μμ΅λκΉ?
λμμ μ£Όμ
μ 미리 κ°μ¬λ립λλ€.
κΈ°μ€
@guillaume-colas κ·νμ λ¬Έμ λ μ‘μΈμ€λ₯Ό νμ©νμ§ μλ μλ²μ κ΄λ ¨λ κ² κ°μ΅λλ€. λΉλ°λ²νΈκ° μ ννκ³ λΉλ°λ²νΈ μ¬μ€μ μ μλνμ΅λκΉ? λΉλ°λ²νΈλ₯Ό μ¬μ€μ νλ©΄ μ΄ λ¬Έμ κ° ν΄κ²°λμμ΅λλ€. κ·Έ ν is_valid_auth_cookies
λ¬Έμ κ° λ°μνμ΅λλ€.
@mark-boer μ, λΉλ°λ²νΈλ₯Ό νμΈνμΌλ©° μ νν©λλ€. 2FA(sms code)λ₯Ό ν΅ν μΈμ¦μ΄ μΈμ¦μ μ°¨λ¨νκ³ μλ κ²μ μλκΉμ?
ClientCredentialsλ₯Ό μ¬μ©νμ¬ νμΌμ μ °μ΄ν¬μΈνΈμ μ λ‘λν μ μμ΅λκΉ?
λμμ μ£Όμ μ 미리 κ°μ¬λ립λλ€.