
    @h1                    L   S r SSKJr  SSK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#  SSK$J%r%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)Lock_async_create_lock)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_authenticatorr0   1   s       %%% !))N11J   ,"00!Dqz!&&71:+>+>tABx+H+H	 "
 $)'!*5]^k]lm 
 0_K!!!    c                  z   \ 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'   \
(       d  \" \S9rS\S'   O\" \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   N   strr!   r   r"   N)defaultOptional[str]refresh_tokenaccess_tokenzOptional[OIDCIdPInfo]idp_infor   inttoken_gen_id)default_factoryr   lockzthreading.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.reauthenticate]   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_authenticater;   oidc_token_gen_idr"   rB   rC   rD   )rE   rF   ctxresps       r/   authenticate_OIDCAuthenticator.authenticatef   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)r8   _get_start_command)rE   s    r/   get_spec_auth_cmd$_OIDCAuthenticator.get_spec_auth_cmdx   s*      &&t/@/@'ABBr1   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)r8   _sasl_start_jwtr   _is_auth_errorrC   )rE   rF   es      r/   rC   (_OIDCAuthenticator._authenticate_machine~   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rY   )	r8   rZ   r   r[   rD   r7   rU   _run_command_sasl_continue_jwt)rE   rF   r\   cmd
start_resps        r/   rD   &_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
                   IS h  vN   U R                  nXT:w  a  UsS S S 5      IS h  vN   $ [        R                  " 5       U R                  -
  nU[        :  a%  [        R                  " [        U-
  5      I S h  vN   [        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[&        (       d9  [        R(                  " 5       R+                  S UR,                  U5      I S h  vN n	OUR-                  U5      n	[/        U	[0        5      (       d  [3        S[5        U	5       35      eU	R"                  U l        U	R                  U l        U =R6                  S-  sl        S S S 5      IS h  vN   U R                  $ U R                  $  GN GN GN{ N N'! , IS h  vN  (       d  f       U R                  $ = f7f)N)timeout_secondsversionr7   r9   r!   z8Callback result must be of type OIDCCallbackResult, not r    )r"   r&   r9   rB   r8   r=   timer?   r   asynciosleepr   r:   r   r   r   r   r7   r!   _IS_SYNCget_running_looprun_in_executorfetch
isinstancer   
ValueErrortyper;   )
rE   r"   is_humancb
prev_token	new_tokendeltatimeoutcontextrP   s
             r/   _get_access_token$_OIDCAuthenticator._get_access_token   s'    __
 ,,D8-$$B$$**B&&
:jbnyyy !--	*$ !yy 		d&9&9955!--(BU(JKKK&*iik#<G==444!)+"Q1QRG-$+,"&"4"4!]]!__55  x!(!9!9!;!K!KDRTRZRZ\c!ddD88G,D!$(:;;$RSWX\S]R^_  &*%7%7"$($5$5!!!Q&!G !yJ    t   K ! L  e5 !yyJ    s   B&K(J)K,J?KJKAJJCJ0J1A9J*K5J6KKJJKK%J(&K2K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   r[   rA   )rE   rF   ra   r\   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)rn   r   coder   )rE   errs     r/   r[   !_OIDCAuthenticator._is_auth_error   s#    #/00xx777r1   c                b    UR                   =(       d    SnUb  X R                  :  a  g S U l        g )Nr   )rN   r;   r8   )rE   rF   r;   s      r/   rA   _OIDCAuthenticator._invalidate   s0     --2#7H7H(H r1   c                8  #    S U l         S U l        [        R                  " US   5      nSU;   a  [	        S0 UD6U l        U R                  5       I S h  vN nU R                  Ul        U R                  SU0U5      nU R                  X5      I S h  vN $  NB N7f)NpayloadissuerrT    )r8   r7   bsondecoder   r9   rx   r;   rN   _get_continue_commandr_   )rE   rF   rb   start_payloadr8   ra   s         r/   r`   %_OIDCAuthenticator._sasl_continue_jwt  s      !!"kk*Y*?@}$'8-8DM!3355!%!2!2((%)>
K&&t111 6 2s$   ABB=BBBBc                   #    U R                  5       I S h  vN nU R                  Ul        U R                  SU05      nU R	                  X5      I S h  vN $  NA N7f)NrT   )rx   r;   rN   rU   r_   )rE   rF   r8   ra   s       r/   rZ   "_OIDCAuthenticator._sasl_start_jwt  sW     !3355!%!2!2%%ul&;<&&t111 6 2s!   AA<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)rE   r   r,   bin_payloads       r/   rU   %_OIDCAuthenticator._get_start_command  sB    ?!]]N/T[[12^TTr1   c                R    [        [        R                  " U5      5      nSUUS   S.$ )Nr    conversationId)saslContinuer   r   )r   r   r   )rE   r   rb   r   s       r/   r   (_OIDCAuthenticator._get_continue_command  s0     T[[12"()9:
 	
r1   )r8   r9   r?   r7   )rF   r   returnOptional[Mapping[str, Any]])r   z"Optional[MutableMapping[str, Any]])rF   r   r   Mapping[str, Any])r   r6   )rF   r   ra   MutableMapping[str, Any]r   r   )r   	Exceptionr   bool)rF   r   r   None)rF   r   rb   r   r   r   )r   r   r   r   )r   r   rb   r   r   r   )__name__
__module____qualname____firstlineno____annotations__r   r7   r8   r9   r;   rj   r   r=   r?   rG   rQ   rV   rC   rD   rx   r_   r[   rA   r`   rZ   rU   r   __static_attributes__r   r1   r/   r   r   N   s	   M#(#6M=6"'"5L-5&+D&9H#9a(L#(+=>d>$5GHnH!!,NE,44$C0?B;!z#*B	8
!2#21B2	22U
(
6G
	!
r1   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)r0   r+   rG   rQ   )r*   rF   rG   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   rF   r   rG   r   r   r   )/__doc__
__future__r   rh   	threadingrg   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.lockr   r   pymongo.asynchronous.poolr   pymongo.auth_sharedr   rj   r0   r   r   r   r1   r/   <module>r      s    + "    ( O O   #
 
 
 @ ? 193" "+:"": W
 W
 W
t6 6(76IM6 6r1   