
    AHjv3                        d Z ddlZddlZddlZddlZddlZddlmZmZ  ej                  e
      Z	 ddlZ ej                  d         G d de      Z G d de      ZdZdZd Zd ZddZd Zd Zd Zd Z	 	 	 d dZ	 	 	 	 	 	 d!dZ 	 	 d"dZ!ddZ"d Z#y# eef$ r6 dddd	j!                  ej"                        Zer ed
e d       ed      w xY w)#zThis module is an adaptor to the underlying broker.
It relies on PyMsalRuntime which is the package providing broker's functionality.
    N   )__version__SKUc                 <   t        j                  j                  t        j                  t         j                  j
                  t        j                  t         j                  j                  t        j                  ij                  |t        j                        |       S N)	pymsalruntimeLogLevelTRACEloggerdebugDEBUGFATALcriticalget)messagelevels     C/root/tools/cai/cai_env/lib/python3.12/site-packages/msal/broker.py<lambda>r      se    $$fll$$fll
 	$$fooD
 #eV\\
"7D,     z1.20z1.31z1.33)win32darwinlinuxz;You must install dependency by: pip install "msal[broker]>=z,<2"z8Dependency pymsalruntime unavailable on current platformc                       e Zd Zy)RedirectUriErrorN__name__
__module____qualname__ r   r   r   r   (       r   r   c                       e Zd Zy)TokenTypeErrorNr   r   r   r   r"   r"   ,   r    r   r"   z$msauth.com.msauth.unsignedapp://authz<https://login.microsoftonline.com/common/oauth2/nativeclientc                 V   | j                         }d|v sd|v r$t        dj                  |t        t                    ddj                  || j                         | j                         | j                               | j                         | j                         | j                         dS )NAADSTS50011AADSTS7000218z~MsalRuntime needs the current app to register these redirect_uri
(1) ms-appx-web://Microsoft.AAD.BrokerPlugin/{}
(2) {}
(3) {}broker_errorz'{}. Status: {}, Error code: {}, Tag: {})errorerror_description_broker_status_broker_error_code_broker_tag)get_contextr   format_default_redirect_uri_on_mac_default_redirect_uri
get_statusget_error_codeget_tag)r'   	client_idcontexts      r   _convert_errorr5   <   s    !GW$')
 &8:O
P	R 	R   GMM 4 4 6I  **,#224}}

 

r   c                 J   t        j                         }t        j                  | ||fd       |j                  j	                          |j
                  j                         }|r!t        j                  dt        |d             y|j
                  j                         }|r|S y)zEReturn an instance of MSALRuntimeError or MSALRuntimeAccount, or Nonec                 $    |j                  |       S r   completeresultcallback_datas     r   r   z%_read_account_by_id.<locals>.<lambda>\       M4J4J64R r   zread_account_by_id() error: %sN)r   CallbackDataread_account_by_idsignalwaitr;   	get_errorr   r   r5   get_account)
account_idcorrelation_idr<   r'   accounts        r   _read_account_by_idrG   V   s    !..0M$$%2R

   **,E5~eT7RS""..0Gr   c                    | j                         }|j                  dd        | j                         }|rt        t	        ||      |      S | j                         r#t        j                  | j                               ni }| j                         }|sJ d       | j                         r!| j                         j                         d   n| j                         | j                         t        t        j                               z
  | j!                         ||j#                         |j%                         | j                         rdn|xs ddj'                         D ci c]
  \  }}|r|| }	}}|	d   j)                  d	      }
|	d
   j+                         dk(  r"|
s t-        dj/                  |	d   d d             | j1                         }|rdj3                  |      |	d<   t        |	|      S c c}}w )Nwam_telemetry)_msalruntime_telemetryz*Account is expected to be always availabler   popbearer)access_token
expires_inid_tokenid_token_claimsclient_info_account_id
token_typerM   AAAArS   zssh-certz'Broker could not get an SSH Cert: {}...    scope)get_telemetry_datarK   rB   dictr5   get_id_tokenjsonloadsrC   is_pop_authorizationget_authorization_headersplitget_access_tokenget_access_token_expiry_timeinttimeget_raw_id_tokenget_client_infoget_account_iditems
startswithlowerr"   r-   get_granted_scopesjoin)r;   r3   expected_token_type	telemetryr'   rP   rF   kvreturn_valuelikely_a_certgranted_scopess               r   _convert_resultrs   i   s   ))+IMM/4(EN5)4YWW;A;N;N;Pdjj!4!4!67VXO  "G@@@7 **, ++-282I2I2K99;c$))+>NN++-*..0--/446+8&
 %'TQ  qD L  !0;;FCML!'')Z7FMM(!,. / 	/..0N # 8WY??)s    G1c                  <    t        t        j                               S r   )struuiduuid4r   r   r   _get_new_correlation_idrx      s    tzz|r   c                 (    | j                  dd       y )Nmsal_request_typeconsumer_passthrough)set_additional_parameterparamss    r   _enable_msa_ptr      s    
##$79OPr   c                     t        j                  | |      }|j                  dt               |j                  dt               |S )Nmsal_client_skumsal_client_ver)r   MSALRuntimeAuthParametersr|   r   r   )r3   	authorityr~   s      r   _build_msal_runtime_auth_paramsr      s;    44Y	JF
##$5s;
##$5{CMr   c                     t         j                  dk(  r| j                  t               y | j                  t               y )Nr   )sysplatformset_redirect_urir.   r/   r}   s    r   _set_redirect_urir      s,    
||x <= 56r   c                    t        ||       }t        |       |j                  |       |r|j                  |       |rP|j	                  |j
                  |j                  j                  |j                  j                  |j                         t        j                         }	|j                         D ]#  \  }
}|	|j                  |
t        |             % |rt        |       t        j                   ||xs
 t#               |	fd       |	j$                  j'                          t)        |	j*                  ||j-                  d            S )Nc                 $    |j                  |       S r   r8   r:   s     r   r   z"_signin_silently.<locals>.<lambda>   r=   r   rS   rl   )r   r   set_requested_scopesset_decoded_claimsset_pop_params_http_method_urlnetlocpath_noncer   r>   rg   r|   ru   r   signin_silentlyrx   r@   rA   rs   r;   r   )r   r3   scopesrE   claimsenable_msa_ptauth_schemekwargsr~   r<   rn   ro   s               r   _signin_silentlyr      s"   
 -Y	BFf
'!!&)$$k&6&6&=&={?O?O?T?T	  "..0M 71=++As1v67 v!!313%2RT iVZZ=UW Wr   c
                    t        ||       }|j                  |       t        |       |r5|dk(  r|r.d }t        j	                  d       nt        j	                  d|       ||j                  dd       |rt        |       |	rP|j                  |	j                  |	j                  j                  |	j                  j                  |	j                         |
j                         D ]#  \  }}|	|j                  |t        |             % |r|j                  |       t!        j"                  d      }t!        j$                  |xs* t!        j&                         xs t!        j(                         ||xs
 t+               ||fd       |j,                  j/                          t1        |j2                  ||
j5                  d	      
      S )Nselect_accountzKUsing both select_account and login_hint is ambiguous. Ignoring login_hint.z)prompt=%s is not supported by this modulemsal_gui_threadtrueT)is_interactivec                 $    |j                  |       S r   r8   r:   s     r   r   z'_signin_interactively.<locals>.<lambda>   r=   r   rS   r   )r   r   r   r   warningr|   r   r   r   r   r   r   r   rg   ru   r   r   r>   signin_interactivelyget_console_windowget_desktop_windowrx   r@   rA   rs   r;   r   )r   r3   r   parent_window_handleprompt
login_hintr   rE   r   r   r   r~   rn   ro   r<   s                  r   _signin_interactivelyr      s    -Y	BF
'f%% "
lmNNFO#''(96Bv$$k&6&6&=&={?O?O?T?T	   71=++As1v67 !!&)!..dCM&&h @ @ BhmFfFfFh313%2RT iVZZ=UW Wr   c                    |xs
 t               }t        ||      }|y t        ||       }	t        |	       |	j	                  |       |r|	j                  |       |rP|	j                  |j                  |j                  j                  |j                  j                  |j                         |j                         D ]#  \  }
}|	|	j                  |
t        |             % t        j                          }t        j"                  |	|||fd       |j$                  j'                          t)        |j*                  ||j-                  d            S )Nc                 $    |j                  |       S r   r8   r:   s     r   r   z)_acquire_token_silently.<locals>.<lambda>  r=   r   rS   r   )rx   rG   r   r   r   r   r   r   r   r   r   r   rg   r|   ru   r   r>   acquire_token_silentlyr@   rA   rs   r;   r   )r   r3   rD   r   r   rE   r   r   rF   r~   rn   ro   r<   s                r   _acquire_token_silentlyr      s3    $@'>'@N!*n=G,Y	BFf
'!!&)$$k&6&6&=&={?O?O?T?T	   71=++As1v67 "..0M((%2R	T
 iVZZ=UW Wr   c                     |xs
 t               }t        ||      }|y t        j                         }t        j                  | |||fd       |j
                  j                          |j                  j                         }|rt        ||       S y )Nc                 $    |j                  |       S r   r8   r:   s     r   r   z#_signout_silently.<locals>.<lambda>  r=   r   )
rx   rG   r   r>   signout_silentlyr@   rA   r;   rB   r5   )r3   rD   rE   rF   r<   r'   s         r   _signout_silentlyr     s    #@'>'@N!*n=G!..0M""%2R	T
   **,EeY// r   c                  .    t        j                  d       y )Nr   )r   set_is_pii_enabledr   r   r   _enable_pii_logr     s    $$Q'r   r   )NNFN)NNNNFN)NNN)$__doc__r[   loggingr   rc   rv   skur   r   	getLoggerr   r   r   register_logging_callbackImportErrorAttributeErrorr   r   min_ver
ValueErrorr   r"   r.   r/   r5   rG   rs   rx   r   r   r   r   r   r   r   r   r   r   r   <module>r      sU     
   !			8	$V+M++ -, -2	z 		Z 	  F  W 

4&@BQ7 CGW@ 0Wh OSWB0 (M 	^$ V  
c#,,	 
 I'RVWY 	Y TUUVs   B =C