
    @hs0                    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_create_lock)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_authenticatorr0   1   s       %%% !))N11J   ,"00!Dqz!&&71:+>+>tABx+H+H	 "
 $)'!*5]^k]lm 
 0_K!!!    c                  n   \ 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      $ U R	                  U5      $ )z(Handle a reauthenticate from the server.)_invalidater"   callback_authenticate_machine_authenticate_human)selfconns     r/   reauthenticate!_OIDCAuthenticator.reauthenticate]   sA     	??##--d33''--r1   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_authenticater;   oidc_token_gen_idr"   rB   rC   rD   )rE   rF   ctxresps       r/   authenticate_OIDCAuthenticator.authenticatef   sv     mm3**,,//DV)-):):&
 ??##--d33''--r1   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      $ 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)r8   _sasl_start_jwtr   _is_auth_errorrC   )rE   rF   es      r/   rC   (_OIDCAuthenticator._authenticate_machine~   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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    
 ++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[$        (       d1  [&        R(                  " 5       R+                  S UR,                  U5      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        U R                  $ U R                  $ ! , (       d  f       U R                  $ = f)N)timeout_secondsversionr7   r9   r!   z8Callback result must be of type OIDCCallbackResult, not r    )r"   r&   r9   rB   r8   r=   timer?   r   sleepr   r:   r   r   r   r   r7   r!   _IS_SYNCasyncio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 !--	*$  		d&9&9955JJ9EAB&*iik#<G==444!)+"Q1QRG-$+,"&"4"4!]]!__55  x"335EEdBHHV]^D88G,D!$(:;;$RSWX\S]R^_  &*%7%7"$($5$5!!!Q&!G J    t   K J    s   "I(?F	I((
J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   r[   rA   )rE   rF   ra   r\   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)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                   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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--/!%!2!2((%)>
K  ++r1   c                    U R                  5       nU R                  Ul        U R                  SU05      nU R	                  X5      $ )NrT   )rx   r;   rN   rU   r_   )rE   rF   r8   ra   s       r/   rZ   "_OIDCAuthenticator._sasl_start_jwt  sD    --/!%!2!2%%ul&;<  ++r1   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;   ri   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#(<8d8$\BnB!!,NE,..$C*9B;!z8
!,,,=,	,,U
(
6G
	!
r1   c                ~    [        XR                  5      nU(       a  UR                  U5      $ UR                  U5      $ )z Authenticate using MONGODB-OIDC.)r0   r+   rG   rQ   )r*   rF   rG   authenticators       r/   _authenticate_oidcr   '  s7     '{LLAM++D11))$//r1   )r*   r   r+   ztuple[str, int]r   r   )r*   r   rF   r   rG   r   r   r   )/__doc__
__future__r   rj   	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.auth_sharedr   pymongo.synchronous.poolr   ri   r0   r   r   r   r1   r/   <module>r      s    + "    ( O O   #
 
 
 @ ? +33" "+:"": U
 U
 U
p0 0(20DH0 0r1   