
    &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)AsyncConnection)MongoCredentialF_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          cC:\Suresh\moveshuttle\MDcreated\moveengine\venv\Lib\site-packages\pymongo/asynchronous/auth_oidc.py_get_authenticatorr.   /   s       %%% !))N11J   ,"00!Dqz!&&71:+>+>tABx+H+H	 "
 $)'!*5]^k]lm 
 0_K!!!    c                  h   \ 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      I Sh  vN $ U R	                  U5      I Sh  vN $  N N7f)z(Handle a reauthenticate from the server.N)_invalidater    callback_authenticate_machine_authenticate_human)selfconns     r-   reauthenticate!_OIDCAuthenticator.reauthenticateW   sR      	??##33D999--d333 :3s$   AA%A!A%A#A%#A%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      I Sh  vN $ U R                  U5      I Sh  vN $  N N7f)z'Handle an initial authenticate request.doneN)	auth_ctxspeculate_succeededspeculative_authenticater9   oidc_token_gen_idr    r@   rA   rB   )rC   rD   ctxresps       r-   authenticate_OIDCAuthenticator.authenticate`   s      mm3**,,//DV)-):):&
 ??##33D999--d333 :3s$   BB,
B(B,#B*$B,*B,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      I S h  vN $ U R                  U5      I S h  vN $  N! [         a;  nU R                  U5      (       a  U R	                  U5      I S h  vN  s S nA$ e S nAff = f NN7fN)r6   _sasl_start_jwtr   _is_auth_errorrA   )rC   rD   es      r-   rA   (_OIDCAuthenticator._authenticate_machinex   s     
 !11$777
 ))$/// 8# &&q))!%!;!;D!AAAA 0sa   BA	 AA	 BBBA	 	
B*B	=B >B	BBB		BBc                z  #    U R                   (       a   U R                  U5      I S h  vN $ U R
                  (       a   U R                  U5      I S h  vN $ U R                  S 5      nU R                  X5      I S h  vN nU R                  X5      I S h  vN $  Nr! [         a;  nU R                  U5      (       a  U R	                  U5      I S h  vN  s S nA$ e S nAff = f N! [         aB  nU R                  U5      (       a&  S U l        U R	                  U5      I S h  vN  s S nA$ e S nAff = f N N7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    
 !11$777 !11$777 %%d+,,T77
,,T>>>1 8# &&q))!%!9!9$!???? 8# &&q)))-D&!%!9!9$!????	 8>s   D;B BB D; C( C&C( &D;>D7?D;D9D;B 
C#(*CCCC#D;CC##D;&C( (
D421D/#D&$D/(D4)D;.D//D44D;9D;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I S h  vN $  N! [         a-  nU R                  U5      (       a  U R                  U5        e S nAff = f7f)Nz	$externalT)	no_reauth)commandr   rY   r?   )rC   rD   r_   rZ   s       r-   r]   _OIDCAuthenticator._run_command   sV     	k3$GGGG 	""1%%  &	s0   A  A 
A(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      I S h  vN $  N7f)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&&t1111s   BB	B
Bc                   #    U R                  5       nU R                  Ul        U R                  SU05      nU R	                  X5      I S h  vN $  N7f)NrR   )rr   r9   rL   rS   r]   )rC   rD   r6   r_   s       r-   rX   "_OIDCAuthenticator._sasl_start_jwt  sM     --/!%!2!2%%ul&;<&&t1111s   A	AAA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,44$C0?B8!t#*B	8
!2#21B2	22U
(
6G
	!
r/   c                   #    [        XR                  5      nU(       a  UR                  U5      I Sh  vN $ UR                  U5      I Sh  vN $  N N7f)z Authenticate using MONGODB-OIDC.N)r.   r)   rE   rO   )r(   rD   rE   authenticators       r-   _authenticate_oidcr      sH      '{LLAM"11$777"//555 85s!   1AAAAAA)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.asynchronous.poolr   pymongo.auth_sharedr   _IS_SYNCr.   r   r   r   r/   r-   <module>r      s    + "   ( O O   #
 
 
 @ ?93" "+:"": P
 P
 P
f6 6(76IM6 6r/   