+\h[0>dZddlmZddlZddlZddlZddlmZmZddl m Z m Z m Z m Z mZmZddlZddlmZddlmZddlmZmZmZmZmZmZmZmZmZdd lm Z m!Z!dd l"m#Z#dd l$m%Z%m&Z&e r dd l'm(Z(dd l)m*Z*dZ+ ddZ,eGddZ- ddZ.y)z$MONGODB-OIDC Authentication helpers.) annotationsN) dataclassfield) TYPE_CHECKINGAnyMappingMutableMappingOptionalUnion)Binary) remaining) CALLBACK_VERSIONHUMAN_CALLBACK_TIMEOUT_SECONDS MACHINE_CALLBACK_TIMEOUT_SECONDSTIME_BETWEEN_CALLS_SECONDS OIDCCallbackOIDCCallbackContextOIDCCallbackResult OIDCIdPInfo_OIDCProperties)ConfigurationErrorOperationFailure)_AUTHENTICATION_FAILURE_CODE)Lock_async_create_lock)AsyncConnection)MongoCredentialF_OIDCAuthenticatorc|jjr|jjS|j}|j}|jbd}|j }|D]9}||dk(rd}|j ds |dj|dds8d};|std|dd|t|||j_|jjS) NFrTz*.zRefusing to connect to z(, which is not in authOIDCAllowedHosts: )username properties) cachedatar!mechanism_propertieshuman_callback allowed_hosts startswithendswithrr) credentialsaddressprincipal_namer"foundr'patts a/root/niggaflix-v3/playground/venv/lib/python3.12/site-packages/pymongo/asynchronous/auth_oidc.py_get_authenticatorr01s  %%%!))N11J  ,"00 ! Dwqz!&71:+>+>tABx+H   $)'!*5]^k]lm  0T^_K    ! !!cxeZdZUded<ded<edZded<edZded <edZd ed <ed Zd ed<e see Z ded<nee Z ded<ed Z ded<d"dZ d"dZd#dZd$dZd"dZd%dZ d&dZd'dZd(dZ d)dZd$dZd*d Z d+d!Zy),rstrr!rr"N)default Optional[str] refresh_token access_tokenzOptional[OIDCIdPInfo]idp_inforint token_gen_id)default_factoryrlockzthreading.Lockfloatlast_call_timecK|j||jjr|j|d{S|j |d{S77w)z(Handle a reauthenticate from the server.N) _invalidater"callback_authenticate_machine_authenticate_human)selfconns r/reauthenticatez!_OIDCAuthenticator.reauthenticate]sT  ?? # #33D99 9--d333:3s!2A53A>7B8B=A>>BBcRK|jr |j|d{S|j r |j|d{S|j d}|j||d{}|j||d{S7o#t$r6}|j|r|j |d{7cYd}~Sd}~wwxYw7#t$r=}|j|r&d|_|j |d{7cYd}~Sd}~wwxYw77wrU) r7rVrrWrCr6rR _run_command_sasl_continue_jwt)rDrErXcmd start_resps r/rCz&_OIDCAuthenticator._authenticate_humans    !11$777    !11$777%%d+,,T377 ,,T:>>>18# &&q)!%!9!9$!???? 8# &&q))-D&!%!9!9$!????  8>s D'BBB D'C C C'D'5D#6D'D%D'B C%CCC C D'CCD'C D #,DDDD D'DD  D'%D'cK|j}|jdu}|r |jy|jr |j}|jr |j}|j}|r|S|sy|s||j 4d{|j}||k7r|cdddd{St j |jz }|tkr$tjt|z d{t j |_|rt}|jJttxst}t|t |j"|j|jj$}t&s8tj(j+d|j,|d{} n|j-|} t/| t0st3dt5| | j"|_| j|_|xj6dz c_dddd{|jS|jS777f77'#1d{7swY|jSxYww)N)timeout_secondsversionr6r8r!z8Callback result must be of type OIDCCallbackResult, not r )r"r&r8rAr7r<timer>rasynciosleeprr9r rrrr6r!_IS_SYNCget_running_looprun_in_executorfetch isinstancer ValueErrortyper:) rDr"is_humancb prev_token new_tokendeltatimeoutcontextrNs r/_get_access_tokenz$_OIDCAuthenticator._get_access_tokensK__ ,,D8  -   $$B  $ $**B&&   :jbnyy# '# '!--  *$ # '# '# ' d&9&9955!--(BU(JKKK&*iik# K&&tS11162s$ABB>BBBBcK|jd{}|j|_|jd|i}|j ||d{S7B7w)NrQ)rrr:rLrRrZ)rDrEr7r\s r/rVz"_OIDCAuthenticator._sasl_start_jwts[!3355 !%!2!2%%ul&;<&&tS11162s!AA=AAAAcx||j}|rd|i}ni}ttj|}dd|dS)Nnr z MONGODB-OIDC) saslStart mechanismr{)r!r r~encode)rDr{r, bin_payloads r/rRz%_OIDCAuthenticator._get_start_commandsB ?!]]N/T[[12 ^ TTr1cPttj|}d||ddS)Nr conversationId) saslContinuer{r)r r~r)rDr{r]rs r/rz(_OIDCAuthenticator._get_continue_commands0T[[12 "()9:  r1)rErreturnOptional[Mapping[str, Any]])rz"Optional[MutableMapping[str, Any]])rErrMapping[str, Any])rr5)rErr\MutableMapping[str, Any]rr)rx Exceptionrbool)rErrNone)rErr]rrr)r{rrr)r{rr]rrr)__name__ __module__ __qualname____annotations__rr6r7r8r:rdrr<r>rFrOrSrBrCrrrZrWr@r[rVrRrr}r1r/rrNs M#(#6M=6"'"5L-5&+D&9H#9a(L#( +=>d>$5GHnH!!,NE,44$C 0?B;!z#*B 8 ! 2# 21B 2  22 U ( 6G ! r1cKt||j}|r|j|d{S|j|d{S77w)z Authenticate using MONGODB-OIDC.N)r0r+rFrO)r*rErF authenticators r/_authenticate_oidcr)sL'{DLLAM"11$777"//55585s!-AA AA AA)r*rr+ztuple[str, int]rr)r*rrErrFrrr)/__doc__ __future__rrb threadingra dataclassesrrtypingrrrr r r r~ bson.binaryr pymongo._csotr pymongo.auth_oidc_sharedrrrrrrrrrpymongo.errorsrrpymongo.helpers_sharedr pymongo.lockrrpymongo.asynchronous.poolrpymongo.auth_sharedrrdr0rrr}r1r/rs+" (OO #   @?193 " "+:"": W W  W t6 6(76IM6 6r1