Ë
    ïñþiï'  ã            
       óf  — 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$y)é    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<   y)Ú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"   © ó    ú^/root/aria/mcps/aria-brain/venv/lib/python3.12/site-packages/mcp/server/auth/handlers/token.pyr   r      sq   … àÐ,Ñ-Ó-Ù�cÐ'?Ô@€Dˆ#Ó@Ù"'¨Ð:sÔ"t€L�&˜4‘-ÓtØƒNà $€M�3˜‘:Ó$á˜sÐ0DÔE€M�3ÓEá  Ð3UÔV€Hˆc�D‰jÔ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<   y)Ú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^   … à˜Ñ(Ó(Ù˜sÐ0CÔD€M�3ÓDÙ˜dÐ0JÔK€Eˆ3�‰:ÓKØƒNà $€M�3˜‘:Ó$á  Ð3UÔV€Hˆc�D‰jÔVr)   r,   c                   ó6   — e Zd ZU eeez   ed¬«      f   ed<   y)ÚTokenRequestr   ©ÚdiscriminatorÚrootN)r#   r$   r%   r   r   r,   r
   r&   r(   r)   r*   r0   r0   +   s'   … ð Ø Ð#6Ñ6Ù˜LÔ)ð	+ñô r)   r0   r   r1   c                   óD   — e Zd ZU dZeed<   dZedz  ed<   dZe	dz  ed<   y)Ú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   s-   … ñð ÓØ$(Ð�s˜T‘zÓ(Ø#'€Iˆz˜DÑ Ô'r)   r5   c                   ó   — e Zd ZU eed<   y)ÚTokenSuccessResponser3   N)r#   r$   r%   r   r&   r(   r)   r*   r;   r;   C   s
   … ð Ôr)   r;   c                   óL   — 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y)ÚTokenHandlerÚproviderÚclient_authenticatorÚobjc                 óL   — 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   s5   € ØˆÜ�cÔ-Ô.ØˆKä#ØØ#à!+Ø$ñô
ð 	
r)   Úrequestc           	   ƒ   ó
  K  — 	 | j                   j                  |«      ƒ d {  –—† }	 |j                  «       ƒ d {  –—† }t        j                  t        |«      «      j                  }|j                  |j                  vr*| j                  t	        d	d
|j                  › d�¬«      «      S |xt         d˜ x��Ò\    | j"                  j%                  ||j&                  «      ƒ d {  –—† }|�|j(                  |j(                  k7  r| j                  t	        dd¬«      «      S |j*                  t-        j,                  «       k  r| j                  t	        dd¬«      «      S |j.                  r|j0                  }nd }|j0                  �t3        |j0                  «      nd }	|�t3        |«      nd }
|	|
k7  r| j                  t	        dd¬«      «      S t5        j6                  |j8                  j;                  «       «      j=                  «       }t?        j@                  |«      jC                  «       jE                  d«      }||jF                  k7  r| j                  t	        dd¬«      «      S 	 | j"                  jI                  ||«      ƒ d {  –—† }�nM tP        d˜ x��A\   | j"                  jS                  ||jT                  «      ƒ d {  –—† }|�|j(                  |j(                  k7  r| j                  t	        dd¬«      «      S |j*                  r=|j*                  t-        j,                  «       k  r| j                  t	        dd¬«      «      S |jV                  r|jV                  jY                  d«      n|jZ                  }|D ]2  }||jZ                  vsŒ| j                  t	        dd|› d�¬«      «      c S  	 | j"                  j]                  |||«      ƒ d {  –—† }n | j                  t_        ¬«      «      S 7 �ŒÎ# t        $ r0}t        t	        d|j
                  ¬«      ddddœ¬«      cY d }~S d }~ww xY w7 �Œô# t        $ r/}| j                  t	        dt        |«      ¬«      «      cY d }~S d }~ww xY w7 �Œ‹7 �Œï# tJ        $ r:}| j                  t	        |jL                  |jN                  ¬«      «      cY d }~S d }~ww xY w7 �Œû7 Œí# tJ        $ r:}| j                  t	        |jL                  |jN                  ¬«      «      cY d }~S d }~ww xY w­w)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Ñ 9× NÑ NÈwÓ W×WˆKð		Ø%Ÿl™l›n×,ˆIÜ(×7Ñ7¼¸Y»ÓH×MÑMˆMð ×#Ñ#¨;×+BÑ+BÑBØ—=‘=Ü"Ø2Ø)[Ð\g×\sÑ\sÐ[tÐtuÐ'vôóð ð Ø+Ô)×+Ø"&§-¡-×"GÑ"GÈÐUb×UgÑUgÓ"h×h�	ØÐ$¨	×(;Ñ(;¸}×?VÑ?VÒ(VàŸ=™=Ü*Ø"1Ø.Qôóð ð ×'Ñ'¬$¯)©)«+Ò5ØŸ=™=Ü*Ø"1Ø.Nôóð ð ×=Ò=Ø5>×5KÑ5KÑ2à59Ð2ð IV×HbÑHbÐHn¤S¨×)CÑ)CÔ%DÐtxÐ"à;YÐ;e”CÐ6Ô7Ðkoð "ð &Ð):Ò:ØŸ=™=Ü*Ø"3Ø/pôóð ô !Ÿ™¨×(CÑ(C×(JÑ(JÓ(LÓM×TÑTÓV�Ü'-×'?Ñ'?ÀÓ'G×'NÑ'NÓ'P×'WÑ'WÐX[Ó'\Ð$à'¨9×+CÑ+CÒCàŸ=™=Ü*Ø"1Ø.Gôóð ð	à#'§=¡=×#LÑ#LÈ[ÐZcÓ#d×d’Fðs ,ôD %Ö&Ø&*§m¡m×&FÑ&FÀ{ÐTa×ToÑToÓ&p× p�Ø Ð(¨M×,CÑ,CÀ}×G^ÑG^Ò,^àŸ=™=Ü*Ø"1Ø.Lôóð ð !×+Ò+°×0HÑ0HÌ4Ï9É9Ë;Ò0VàŸ=™=Ü*Ø"1Ø.Iôóð ð <I×;NÒ;N˜×,Ñ,×2Ñ2°3Ô7ÐTa×ThÑTh�à#ò �EØ M×$8Ñ$8Ò8Ø#Ÿ}™}Ü.Ø&5Ø5KÈEÈ7ÐRqÐ3rôó ò ðð	à#'§=¡=×#GÑ#GÈÐUbÐdjÓ#k×k‘FðE 'ðV �}‰}Ô1°vÔ>Ó?Ð?ðe XúÜ"ò 	ä'Ü*Ø/Ø&'§i¡iôð  à%/Ø(ñô
õ 
ûð	úð -úäò 	Ø—=‘=Ü"Ø+Ü&>Ð?OÓ&Pôóõ ûð	úð( iùðp eúÜ!ò ØŸ=™=Ü*Ø"#§'¡'Ø./×.AÑ.Aôóõ ûðúð !qùðB lùÜ!ò ØŸ=™=Ü*Ø"#§'¡'Ø./×.AÑ.Aôóõ ûðüs"  ‚T„O3 ¢O0£O3 ¨P2 »P/¼,P2 Á(A:TÃ"Q-Ã#E>TÉ"Q3 ÊQ0ÊQ3 Ê8TÊ>R9Ê?C
TÎ
#TÎ. R> ÏR<ÏR> ÏTÏ0O3 Ï3	P,Ï<%P'Ð!P,Ð"TÐ'P,Ð,TÐ/P2 Ð2	Q*Ð;$Q%ÑQ*Ñ TÑ%Q*Ñ*TÑ0Q3 Ñ3	R6Ñ</R1Ò+R6Ò,TÒ1R6Ò6TÒ<R> Ò>	TÓ/S<Ó6TÓ7TÓ<TÔTN)r#   r$   r%   r   r   r&   r   r;   r5   rM   r   r{   r(   r)   r*   r=   r=   J   s<   … à.¨s°C¸¨}Ñ=Ó=Ø-Ó-ð
Ð0Ð3EÑEó 
ðT@ Gô 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…      sº   ðÛ Û Û Ý !ß *Ñ *ç U× UÝ &å ;Ý >ß [ß aÑ aÝ &ôW˜yô Wô	W˜)ô 	WôØØØ$Ð':Ñ:Ù Ô-ð/ñ	
ñôô(˜ô (ô˜9 ZÑ0ô ð ÷f@ð f@ó ñf@r)   