
    &g.                    4   S r SSKJr  SSKrSSKrSSKJrJr  SSKJ	r	J
r
JrJrJrJr  SSKrSSKJr  SSKJr  SSKJrJrJrJrJrJrJrJrJr  SS	KJrJ r   SS
K!J"r"  \	(       a  SSK#J$r$  SSK%J&r&  Sr'      SS jr(\ " S S5      5       r)        SS jr*g)z$MONGODB-OIDC Authentication helpers.    )annotationsN)	dataclassfield)TYPE_CHECKINGAnyMappingMutableMappingOptionalUnion)Binary)	remaining)	CALLBACK_VERSIONHUMAN_CALLBACK_TIMEOUT_SECONDS MACHINE_CALLBACK_TIMEOUT_SECONDSTIME_BETWEEN_CALLS_SECONDSOIDCCallbackOIDCCallbackContextOIDCCallbackResultOIDCIdPInfo_OIDCProperties)ConfigurationErrorOperationFailure)_AUTHENTICATION_FAILURE_CODE)MongoCredential)
ConnectionT_OIDCAuthenticatorc                   U R                   R                  (       a  U R                   R                  $ U R                  nU R                  nUR                  bv  SnUR
                  nU HG  nXaS   :X  a  SnM  UR                  S5      (       d  M'  US   R                  USS  5      (       d  ME  SnMI     U(       d  [        SUS    SU 35      e[        X#S9U R                   l        U R                   R                  $ )	NFr   Tz*.   zRefusing to connect to z(, which is not in authOIDCAllowedHosts: )username
properties)
cachedatar   mechanism_propertieshuman_callbackallowed_hosts
startswithendswithr   r   )credentialsaddressprincipal_namer    foundr%   patts          bC:\Suresh\moveshuttle\MDcreated\moveengine\venv\Lib\site-packages\pymongo/synchronous/auth_oidc.py_get_authenticatorr.   /   s       %%% !))N11J   ,"00!Dqz!&&71:+>+>tABx+H+H	 "
 $)'!*5]^k]lm 
 0_K!!!    c                  \   \ rS rSr% S\S'   S\S'   \" SS9rS\S	'   \" SS9rS\S
'   \" SS9rS\S'   \" SS9r	S\S'   \" \
R                  S9rS\S'   \" SS9rS\S'   S#S jrS#S jrS$S jrS%S jrS#S jrS&S jrS'S jrS(S jrS)S jr      S*S jrS%S jrS+S  jr      S,S! jrS"rg)-r   L   strr   r   r    N)defaultOptional[str]refresh_tokenaccess_tokenzOptional[OIDCIdPInfo]idp_infor   inttoken_gen_id)default_factoryzthreading.Locklockfloatlast_call_timec                    U R                  U5        U R                  R                  (       a  U R                  U5      $ U R	                  U5      $ )z(Handle a reauthenticate from the server.)_invalidater    callback_authenticate_machine_authenticate_human)selfconns     r-   reauthenticate!_OIDCAuthenticator.reauthenticateW   sA     	??##--d33''--r/   c                ,   UR                   nU(       aE  UR                  5       (       a0  UR                  nU(       a  US   (       a  U R                  Ul        U$ U R
                  R                  (       a  U R                  U5      $ U R                  U5      $ )z'Handle an initial authenticate request.done)	auth_ctxspeculate_succeededspeculative_authenticater9   oidc_token_gen_idr    r@   rA   rB   )rC   rD   ctxresps       r-   authenticate_OIDCAuthenticator.authenticate`   sv     mm3**,,//DV)-):):&
 ??##--d33''--r/   c                `    U R                   (       d  gU R                  SU R                   05      $ )z-Get the appropriate speculative auth command.Njwt)r6   _get_start_command)rC   s    r-   get_spec_auth_cmd$_OIDCAuthenticator.get_spec_auth_cmdr   s*      &&t/@/@'ABBr/   c                    U R                   (       a   U R                  U5      $ U R                  U5      $ ! [         a2  nU R                  U5      (       a  U R	                  U5      s S nA$ e S nAff = fN)r6   _sasl_start_jwtr   _is_auth_errorrA   )rC   rD   es      r-   rA   (_OIDCAuthenticator._authenticate_machinex   sm    
 ++D11
 ##D))	 $ &&q))55d;;s    5 
A1&A,%A1+A,,A1c                   U R                   (       a   U R                  U5      $ U R
                  (       a   U R                  U5      $ U R                  S 5      nU R                  X5      nU R                  X5      $ ! [         a2  nU R                  U5      (       a  U R	                  U5      s S nA$ e S nAff = f! [         a9  nU R                  U5      (       a  S U l        U R	                  U5      s S nA$ e S nAff = frW   )	r6   rX   r   rY   rB   r5   rS   _run_command_sasl_continue_jwt)rC   rD   rZ   cmd
start_resps        r-   rB   &_OIDCAuthenticator._authenticate_human   s    
 ++D11 ++D11 %%d+&&t1
&&t88/ $ &&q))33D99 $ &&q)))-D&33D99	sF   A: B9 :
B6&B1*B60B11B69
C<-C70C<6C77C<c           	        U R                   nUR                  S LnU(       a  U R                  c  g UR                  (       a  UR                  nUR                  (       a  UR                  nU R                  nU(       a  U$ Wc  U(       d  g U(       Gd  UGb  U R
                     U R                  nXT:w  a  UsS S S 5        $ [        R                  " 5       U R                  -
  nU[        :  a  [        R                  " [        U-
  5        [        R                  " 5       U l        U(       a  [        nU R                  c   eO [        [        5       =(       d    [        5      n[        U[        U R                   U R                  U R                   R"                  S9nUR%                  U5      n	['        U	[(        5      (       d  [+        S[-        U	5       35      eU	R                   U l        U	R                  U l        U =R.                  S-  sl        S S S 5        U R                  $ U R                  $ ! , (       d  f       U R                  $ = f)N)timeout_secondsversionr5   r7   r   z8Callback result must be of type OIDCCallbackResult, not r   )r    r$   r7   r@   r6   r;   timer=   r   sleepr   r8   r   r   r   r   r5   r   fetch
isinstancer   
ValueErrortyper9   )
rC   r    is_humancb
prev_token	new_tokendeltatimeoutcontextrN   s
             r-   _get_access_token$_OIDCAuthenticator._get_access_token   s   __
 ,,D8-$$B$$**B&&
:jbn !--	*$  		d&9&9955JJ9EAB&*iik#<G==444!)+"Q1QRG-$+,"&"4"4!]]!__55 xx(!$(:;;$RSWX\S]R^_  &*%7%7"$($5$5!!!Q&!A D    t   E D    s   "H,?EH,,
Ic                     UR                  SUSS9$ ! [         a-  nU R                  U5      (       a  U R                  U5        e S nAff = f)Nz	$externalT)	no_reauth)commandr   rY   r?   )rC   rD   r_   rZ   s       r-   r]   _OIDCAuthenticator._run_command   sN    	<<SD<AA 	""1%%  &	s    
A
(AA
c                T    [        U[        5      (       d  gUR                  [        :H  $ )NF)rh   r   coder   )rC   errs     r-   rY   !_OIDCAuthenticator._is_auth_error   s#    #/00xx777r/   c                b    UR                   =(       d    SnUb  X R                  :  a  g S U l        g )Nr   )rL   r9   r6   )rC   rD   r9   s      r-   r?   _OIDCAuthenticator._invalidate   s0     --2#7H7H(H r/   c                   S U l         S U l        [        R                  " US   5      nSU;   a  [	        S0 UD6U l        U R                  5       nU R                  Ul        U R                  SU0U5      nU R                  X5      $ )NpayloadissuerrR    )r6   r5   bsondecoder   r7   rr   r9   rL   _get_continue_commandr]   )rC   rD   r`   start_payloadr6   r_   s         r-   r^   %_OIDCAuthenticator._sasl_continue_jwt   s     !!"kk*Y*?@}$'8-8DM--/!%!2!2((%)>
K  ++r/   c                    U R                  5       nU R                  Ul        U R                  SU05      nU R	                  X5      $ )NrR   )rr   r9   rL   rS   r]   )rC   rD   r6   r_   s       r-   rX   "_OIDCAuthenticator._sasl_start_jwt  sD    --/!%!2!2%%ul&;<  ++r/   c                    Uc  U R                   nU(       a  SU0nO0 n[        [        R                  " U5      5      nSSUS.$ )Nnr   zMONGODB-OIDC)	saslStart	mechanismr   )r   r   r   encode)rC   r   r*   bin_payloads       r-   rS   %_OIDCAuthenticator._get_start_command	  sB    ?!]]N/T[[12^TTr/   c                R    [        [        R                  " U5      5      nSUUS   S.$ )Nr   conversationId)saslContinuer   r   )r   r   r   )rC   r   r`   r   s       r-   r   (_OIDCAuthenticator._get_continue_command  s0     T[[12"()9:
 	
r/   )r6   r7   r=   r5   )rD   r   returnOptional[Mapping[str, Any]])r   z"Optional[MutableMapping[str, Any]])rD   r   r   Mapping[str, Any])r   r4   )rD   r   r_   MutableMapping[str, Any]r   r   )rz   	Exceptionr   bool)rD   r   r   None)rD   r   r`   r   r   r   )r   r   r   r   )r   r   r`   r   r   r   )__name__
__module____qualname____firstlineno____annotations__r   r5   r6   r7   r9   	threadingLockr;   r=   rE   rO   rT   rA   rB   rr   r]   rY   r?   r^   rX   rS   r   __static_attributes__r   r/   r-   r   r   L   s    M#(#6M=6"'"5L-5&+D&9H#9a(L#( @D.@!!,NE,..$C*9B8!t8
!,,,=,	,,U
(
6G
	!
r/   c                ~    [        XR                  5      nU(       a  UR                  U5      $ UR                  U5      $ )z Authenticate using MONGODB-OIDC.)r.   r)   rE   rO   )r(   rD   rE   authenticators       r-   _authenticate_oidcr     s7     '{LLAM++D11))$//r/   )r(   r   r)   ztuple[str, int]r   r   )r(   r   rD   r   rE   r   r   r   )+__doc__
__future__r   r   re   dataclassesr   r   typingr   r   r   r	   r
   r   r   bson.binaryr   pymongo._csotr   pymongo.auth_oidc_sharedr   r   r   r   r   r   r   r   r   pymongo.errorsr   r   pymongo.helpers_sharedr   pymongo.auth_sharedr   pymongo.synchronous.poolr   _IS_SYNCr.   r   r   r   r/   r-   <module>r      s    + "   ( O O   #
 
 
 @ ?33" "+:"": N
 N
 N
b0 0(20DH0 0r/   