
    )`i'              
          d dl Z d dlZd dlZd dlmZ d dlmZmZmZ d dl	m
Z
mZmZmZmZmZ d dlmZ d dlmZ d dlmZ d dlmZmZ d d	lmZmZmZ d d
lmZ  G d de          Z G d de          Z  G d deeee z   ed          f                            Z! G d de          Z" G d dee                   Z#e G d d                      Z$dS )    N)	dataclass)	AnnotatedAnyLiteral)
AnyHttpUrlAnyUrl	BaseModelField	RootModelValidationError)Request)stringify_pydantic_error)PydanticJSONResponse)AuthenticationErrorClientAuthenticator) OAuthAuthorizationServerProvider
TokenErrorTokenErrorCode)
OAuthTokenc                       e Zd ZU ed         ed<    edd          Zeed<    edd          Ze	dz  ed	<   eed
<   dZ
edz  ed<    edd          Zeed<    edd          Zedz  ed<   dS )AuthorizationCodeRequestauthorization_code
grant_type.zThe authorization codedescriptioncodeNz7Must be the same as redirect URI provided in /authorizeredirect_uri	client_idclient_secretzPKCE code verifiercode_verifier Resource indicator for the tokenresource)__name__
__module____qualname__r   __annotations__r
   r   strr   r   r   r    r"        r/home/jaya/work/projects/VOICE-AGENT/VIET/agent-env/lib/python3.11/site-packages/mcp/server/auth/handlers/token.pyr   r      s         ,----c'?@@@D#@@@"'%:s"t"t"tL&4-tttNNN $M3:$$$s0DEEEM3EEE 53UVVVHcDjVVVVVr)   r   c                       e Zd ZU ed         ed<    edd          Zeed<    edd          Zedz  ed<   eed	<   dZ	edz  ed
<    edd          Z
edz  ed<   dS )RefreshTokenRequestrefresh_tokenr   .zThe refresh tokenr   NzOptional scope parameterscoper   r   r!   r"   )r#   r$   r%   r   r&   r
   r-   r'   r.   r   r"   r(   r)   r*   r,   r,      s         ((((s0CDDDM3DDDd0JKKKE3:KKKNNN $M3:$$$ 53UVVVHcDjVVVVVr)   r,   c                   D    e Zd ZU eeez   ed          f         ed<   dS )TokenRequestr   discriminatorrootN)r#   r$   r%   r   r   r,   r
   r&   r(   r)   r*   r0   r0   +   sM           #66L)))	+     r)   r0   r   r1   c                   F    e Zd ZU dZeed<   dZedz  ed<   dZe	dz  ed<   dS )TokenErrorResponsezG
    See https://datatracker.ietf.org/doc/html/rfc6749#section-5.2
    errorNerror_description	error_uri)
r#   r$   r%   __doc__r   r&   r7   r'   r8   r   r(   r)   r*   r5   r5   9   sT           $(sTz(((#'IzD '''''r)   r5   c                       e Zd ZU eed<   dS )TokenSuccessResponser3   N)r#   r$   r%   r   r&   r(   r)   r*   r;   r;   C   s           r)   r;   c                   T    e Zd ZU eeeef         ed<   eed<   deez  fdZ	de
fdZdS )TokenHandlerproviderclient_authenticatorobjc                 ^    d}t          |t                    rd}t          ||ddd          S )N   i  no-storeno-cachezCache-ControlPragmacontentstatus_codeheaders)
isinstancer5   r   )selfr@   rI   s      r*   responsezTokenHandler.responseO   sL    c-.. 	K##!+$ 
 
 
 	
r)   requestc           	      	  K   	 | j                             |           d {V }n@# t          $ r3}t          t	          d|j                  dddd          cY d }~S d }~ww xY w	 |                                 d {V }t                              t          |                    j
        }nH# t          $ r;}|                     t	          dt          |                              cY d }~S d }~ww xY w|j        |j        vr-|                     t	          d	d
|j         d                    S |xt           d x\    | j                            ||j                   d {V }||j        |j        k    r$|                     t	          dd                    S |j        t-          j                    k     r$|                     t	          dd                    S |j        r|j        }nd }|j        t3          |j                  nd }	|t3          |          nd }
|	|
k    r$|                     t	          dd                    S t5          j        |j                                                                                  }t?          j         |          !                                "                    d          }||j#        k    r$|                     t	          dd                    S 	 | j        $                    ||           d {V }n# tJ          $ r8}|                     t	          |j&        |j'                            cY d }~S d }~ww xY w tP          d xn\   | j        )                    ||j*                   d {V }||j        |j        k    r$|                     t	          dd                    S |j        r@|j        t-          j                    k     r$|                     t	          dd                    S |j+        r|j+        ,                    d          n|j-        }|D ]5}||j-        vr*|                     t	          dd| d                    c S 6	 | j        .                    |||           d {V }nF# tJ          $ r8}|                     t	          |j&        |j'                            cY d }~S d }~ww xY w |                     t_          |                    S )Nunauthorized_client)r6   r7   i  rC   rD   rE   rG   invalid_requestunsupported_grant_typez2Unsupported grant type (supported grant types are )r(   invalid_grantz!authorization code does not existzauthorization code has expiredz?redirect_uri did not match the one used when creating auth code=zincorrect code_verifierzrefresh token does not existzrefresh token has expired invalid_scopezcannot request scope `z` not provided by refresh token)r3   )0r?   authenticate_requestr   r   r5   messageformr0   model_validatedictr3   r   rM   r   r   grant_typesr   r>   load_authorization_coder   r   
expires_attime redirect_uri_provided_explicitlyr   r'   hashlibsha256r    encodedigestbase64urlsafe_b64encodedecoderstripcode_challengeexchange_authorization_coder   r6   r7   r,   load_refresh_tokenr-   r.   splitscopesexchange_refresh_tokenr;   )rL   rN   client_infoe	form_datatoken_requestvalidation_error	auth_codeauthorize_request_redirect_uritoken_redirect_strauth_redirect_strrc   hashed_code_verifiertokensr-   rn   r.   s                    r*   handlezTokenHandler.handle]   s     	 $ 9 N Nw W WWWWWWWKK" 	 	 	'*/&'i    %/( 
 
 
 
 
 
 
 
 
			%llnn,,,,,,I(77YHHMMM 	 	 	=="+&>?O&P&P         	 #;+BBB=="2'v\g\s'v'v'v     +)++++++"&-"G"GUbUg"h"hhhhhhh	$	(;}?V(V(V==*"1.Q     '$)++55==*"1.N     = :5>5K22592 IVHbHnS)C%D%D%Dtx";Y;eC6777ko " &):::==*"3/p     !(C(J(J(L(LMMTTVV'-'?'G'G'N'N'P'P'W'WX['\'\$'9+CCC==*"1.G    	#'=#L#L[Zc#d#dddddddFF!   ==*"#'./.A         u ,D %&&&&&&*m&F&F{TaTo&p&p p p p p p p (M,C}G^,^,^==*"1.L     !+ 0H49;;0V0V==*"1.I     <I;Nh,223777TaTh#  EM$888#}}.&53rE3r3r3r         9	#'=#G#GUbdj#k#kkkkkkkFF!   ==*"#'./.A         G 'V }}1v>>>???su    % 
A"(AA"A"&AB- -
C270C-'C2-C2-!L 
M-MMM'"R
 

S-SSSN)r#   r$   r%   r   r   r&   r   r;   r5   rM   r   r{   r(   r)   r*   r=   r=   J   s         .sC}====----
03EE 
 
 
 
T@G T@ T@ T@ T@ T@ T@r)   r=   )%rf   rb   r`   dataclassesr   typingr   r   r   pydanticr   r   r	   r
   r   r   starlette.requestsr   mcp.server.auth.errorsr   mcp.server.auth.json_responser   &mcp.server.auth.middleware.client_authr   r   mcp.server.auth.providerr   r   r   mcp.shared.authr   r   r,   r0   r5   r;   r=   r(   r)   r*   <module>r      sc      ! ! ! ! ! ! * * * * * * * * * * U U U U U U U U U U U U U U U U & & & & & & ; ; ; ; ; ; > > > > > > [ [ [ [ [ [ [ [ a a a a a a a a a a & & & & & &W W W W Wy W W W	W 	W 	W 	W 	W) 	W 	W 	W    $'::E---/	
  ( ( ( ( ( ( ( (    9Z0    f@ f@ f@ f@ f@ f@ f@ f@ f@ f@r)   