Π― Ρ ΠΎΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ°ΡΡ ΡΠ°ΠΉΠ»Ρ ΡΡΠΎΠΌΡ ΠΏΡΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈΠΌΠ΅ΡΡ :
from office365.sharepoint.client_context import ClientContext
settings = {
'url': 'https://*****.sharepoint.com/sites/*****',
'user_credentials': {
'username': '*****@gmail.com',
'password': '*****',
},
}
ctx = ClientContext(settings["url"]).with_user_credentials(settings.get('user_credentials').get('username'),
settings.get('user_credentials').get('password'))
web = ctx.web.get().execute_query()
print(web.properties["Url"])
ΡΡΠΎ Π΄Π°Π΅Ρ ΠΌΠ½Π΅ ΠΎΡΠΈΠ±ΠΊΡ:
IndexError Traceback (most recent call last)
<ipython-input-23-c5907526ff22> in <module>
12 settings.get('user_credentials').get('password'))
13
---> 14 web = ctx.web.get().execute_query()
15 print(web.properties["Url"])
D:\Anaconda\envs\hplc\lib\site-packages\office365\runtime\client_object.py in execute_query(self)
31
32 def execute_query(self):
---> 33 self.context.execute_query()
34 return self
35
D:\Anaconda\envs\hplc\lib\site-packages\office365\runtime\client_runtime_context.py in execute_query(self)
136 def execute_query(self):
137 if self.has_pending_request:
--> 138 self.pending_request().execute_query()
139
140 def add_query(self, query, to_begin=False):
D:\Anaconda\envs\hplc\lib\site-packages\office365\runtime\client_request.py in execute_query(self)
72 request = self.build_request()
73 self.beforeExecute.notify(request)
---> 74 response = self.execute_request_direct(request)
75 response.raise_for_status()
76 self.process_response(response)
D:\Anaconda\envs\hplc\lib\site-packages\office365\runtime\odata\odata_request.py in execute_request_direct(self, request)
32 def execute_request_direct(self, request):
33 self.ensure_media_type(request)
---> 34 return super(ODataRequest, self).execute_request_direct(request)
35
36 def build_request(self):
D:\Anaconda\envs\hplc\lib\site-packages\office365\runtime\client_request.py in execute_request_direct(self, request_options)
84 :type request_options: office365.runtime.http.request_options.RequestOptions
85 """
---> 86 self.context.authenticate_request(request_options)
87 if request_options.method == HttpMethod.Post:
88 if request_options.is_bytes or request_options.is_file:
D:\Anaconda\envs\hplc\lib\site-packages\office365\sharepoint\client_context.py in authenticate_request(self, request)
151
152 def authenticate_request(self, request):
--> 153 self._auth_context.authenticate_request(request)
154
155 def _build_modification_query(self, request):
D:\Anaconda\envs\hplc\lib\site-packages\office365\runtime\auth\authentication_context.py in authenticate_request(self, request)
82 """Authenticate request
83 :type request: RequestOptions"""
---> 84 self._provider.authenticate_request(request)
D:\Anaconda\envs\hplc\lib\site-packages\office365\runtime\auth\providers\saml_token_provider.py in authenticate_request(self, request)
71 """
72 logger = self.logger(self.authenticate_request.__name__)
---> 73 self.ensure_authentication_cookie()
74 logger.debug_secrets(self._cached_auth_cookies)
75 cookie_header_value = "; ".join(["=".join([key, str(val)]) for key, val in self._cached_auth_cookies.items()])
D:\Anaconda\envs\hplc\lib\site-packages\office365\runtime\auth\providers\saml_token_provider.py in ensure_authentication_cookie(self)
78 def ensure_authentication_cookie(self):
79 if self._cached_auth_cookies is None:
---> 80 self._cached_auth_cookies = self.get_authentication_cookie()
81 return True
82
D:\Anaconda\envs\hplc\lib\site-packages\office365\runtime\auth\providers\saml_token_provider.py in get_authentication_cookie(self)
91 user_realm = self._get_user_realm()
92 if user_realm.IsFederated:
---> 93 token = self._acquire_service_token_from_adfs(user_realm.STSAuthUrl)
94 else:
95 token = self._acquire_service_token()
D:\Anaconda\envs\hplc\lib\site-packages\office365\runtime\auth\providers\saml_token_provider.py in _acquire_service_token_from_adfs(self, adfs_url)
134 headers={'Content-Type': 'application/soap+xml; charset=utf-8'})
135 dom = minidom.parseString(response.content.decode())
--> 136 assertion_node = dom.getElementsByTagNameNS("urn:oasis:names:tc:SAML:1.0:assertion", 'Assertion')[0].toxml()
137
138 try:
IndexError: list index out of range
ΠΡΠ±ΡΠ΅ ΠΈΠ΄Π΅ΠΈ? ΠΡΠΎ Π½Π΅ ΠΏΠΎΡ ΠΎΠΆΠ΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ.
@ahulist ΠΠ΅Π΄Π΅Π½ΠΈΠ΅ ΠΆΡΡΠ½Π°Π»Π° response.content.decode()
ΠΈΠ· ΡΡΡΠΎΠΊΠΈ 135 ΡΠ°ΠΉΠ»Π° saml_token_provider.py ΠΈ Π΅Π³ΠΎ ΡΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΠΌΠΎΡΡ Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡΡ, ΠΏΠΎΡΠ΅ΠΌΡ Π½Π΅ Π±ΡΠ»ΠΎ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½ΠΎ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠ΅
@vgrem , Ρ ΠΎΡΡ Π²Ρ, ΡΠ΅Π±ΡΡΠ°, ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΡΡΠΎΡ ΠΊΠΎΠ΄ Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ minidom ΠΈΠ· ΠΌΠΎΠ΅Π³ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ, Ρ Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΠΈΡΠΎΠ³Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΡΠ°ΠΌ ΠΏΡΠΎΡΡΠΎΠ΅ ΡΠΎΠ²ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ. ΠΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±ΡΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΈ Π½Π΅ ΡΡΠ΅Π±ΠΎΠ²Π°ΡΡ ΠΌΠΈΠ½ΠΈΠ΄ΠΎΠΌΠ°, ΠΊΠΎΡΠΎΡΡΠΉ Π²Ρ Π±ΠΎΠ»ΡΡΠ΅ Π½ΠΈΠ³Π΄Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΠ΅:
match = re.search(r'<saml:Assertion.+</saml:Assertion>', response.content.decode())
if match is None:
self.error = 'Cannot get security assertion for user {0} from {1}'.format(self.__username, adfs_url)
logger.error(self.error)
return None
assertion_node = match.group()
ΠΡΠΎΡ ΡΠ°Π½ΠΊ Π²Π·ΡΡ ΠΈΠ· Π±ΠΎΠ»Π΅Π΅ ΡΡΠ°ΡΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ 2.2.1.1.
@nsmcan , ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΠΌΡ ΡΠ΄Π΅Π»Π°Π»ΠΈ # 297 :)
@nsmcan , Ρ ΠΎΡΡ ΡΡΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, ΠΊ ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡ, ΠΏΠΎΠ²Π»ΠΈΡΠ»ΠΎ Π½Π° ΡΠ»ΠΎΠΌΠ°Π½Π½ΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ (Π΄Π»Ρ ΡΠ΅Π΄Π΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠ³ΠΎ Π²Ρ ΠΎΠ΄Π° Ρ ADFS), ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΡΡΠΈΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠΎΠΎΠ±ΡΠ°ΡΡΡΡ Π·Π΄Π΅ΡΡ:
@vgrem , Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄Π²Π°ΠΆΠ΄Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΊΠΎΠ΄ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΡΠ°Π»ΠΎΠ½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ Π² Microsoft. Π― ΠΏΠΎΠΏΡΠΎΡΡ Π½Π°ΡΠ΅Π³ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° SharePoint (@ Zerg00s) ΠΏΠΎΠΌΠΎΡΡ ΠΌΠ½Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΠ°ΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ², Π³Π΄Π΅ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ.
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
@vgrem , Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ Π΄Π²Π°ΠΆΠ΄Ρ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΠΊΠΎΠ΄ Π½Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΡΠ°Π»ΠΎΠ½Π½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ, Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠΉ Π² Microsoft. Π― ΠΏΠΎΠΏΡΠΎΡΡ Π½Π°ΡΠ΅Π³ΠΎ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠ°ΡΠΎΡΠ° SharePoint (@ Zerg00s) ΠΏΠΎΠΌΠΎΡΡ ΠΌΠ½Π΅ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΈ Π½Π°ΡΡΡΠΎΠΈΡΡ ΠΏΠ°ΡΡ ΡΠ΅ΡΡΠΎΠ²ΡΡ ΡΠΊΠ·Π΅ΠΌΠΏΠ»ΡΡΠΎΠ², Π³Π΄Π΅ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΈΡΠΎΠ²Π°ΡΡ.