Ë
    ïñþi«#  ã                   ó  — d dl mZmZ d dlmZ d dlmZ d dl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 d d
lmZ d dlmZ d dlmZ d dl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& d dl'm(Z( defd„Z)dZ*dZ+dZ,dZ-deegeee   z  f   de.e/   defd„Z0	 	 	 d.de!eeef   d ed!edz  d"e#dz  d#e$dz  de.e   fd$„Z1d ed!edz  d"e#d#e$de(f
d%„Z2d&edefd'„Z3	 	 	 d.d(ed)e.e   d*e.e/   dz  d+e/dz  d,edz  de.e   fd-„Z4y)/é    )Ú	AwaitableÚCallable)ÚAny)Úurlparse)Ú
AnyHttpUrl)ÚCORSMiddleware)ÚRequest)ÚResponse)ÚRouteÚrequest_response)ÚASGIApp)ÚAuthorizationHandler)ÚMetadataHandler)ÚRegistrationHandler)ÚRevocationHandler)ÚTokenHandler)ÚClientAuthenticator)Ú OAuthAuthorizationServerProvider)ÚClientRegistrationOptionsÚRevocationOptions)ÚMCP_PROTOCOL_VERSION_HEADER)ÚOAuthMetadataÚurlc                 ó   — | j                   dk7  rA| j                  dk7  r2| j                  �&| j                  j                  d«      st        d«      ‚| j                  rt        d«      ‚| j
                  rt        d«      ‚y)zµ
    Validate that the issuer URL meets OAuth 2.0 requirements.

    Args:
        url: The issuer URL to validate

    Raises:
        ValueError: If the issuer URL is invalid
    ÚhttpsÚ	localhostNz	127.0.0.1zIssuer URL must be HTTPSz#Issuer URL must not have a fragmentz'Issuer URL must not have a query string)ÚschemeÚhostÚ
startswithÚ
ValueErrorÚfragmentÚquery)r   s    úV/root/aria/mcps/aria-brain/venv/lib/python3.12/site-packages/mcp/server/auth/routes.pyÚvalidate_issuer_urlr$      sp   € ð 	�
‰
�gÒØ�H‰H˜Ò#Ø�X‰XÐ!¨#¯(©(×*=Ñ*=¸kÔ*JäÐ3Ó4Ð4ð ‡|‚|ÜÐ>Ó?Ð?Ø
‡y‚yÜÐBÓCÐCð ó    z
/authorizez/tokenz	/registerz/revokeÚhandlerÚallow_methodsÚreturnc                 ó@   — t        t        | «      d|t        g¬«      }|S )NÚ*)ÚappÚallow_originsr'   Úallow_headers)r   r   r   )r&   r'   Úcors_apps      r#   Úcors_middlewarer/   8   s)   € ô Ü˜WÓ%ØØ#Ü2Ð3ô	€Hð €Or%   NÚproviderÚ
issuer_urlÚservice_documentation_urlÚclient_registration_optionsÚrevocation_optionsc                 óÞ  — t        |«       |xs
 t        «       }|xs
 t        «       }t        ||||«      }t	        | «      }t        dt        t        |«      j                  ddg«      ddg¬«      t        t        t        | «      j                  ddg¬«      t        t        t        t        | |«      j                  ddg«      ddg¬«      g}|j                  rFt        | |¬«      }|j                  t        t         t        |j                  ddg«      ddg¬«      «       |j                  rEt#        | |«      }	|j                  t        t$        t        |	j                  ddg«      ddg¬«      «       |S )Nz'/.well-known/oauth-authorization-serverÚGETÚOPTIONS©ÚendpointÚmethodsÚPOST)Úoptions)r$   r   r   Úbuild_metadatar   r   r/   r   ÚhandleÚAUTHORIZATION_PATHr   Ú
TOKEN_PATHr   Úenabledr   ÚappendÚREGISTRATION_PATHr   ÚREVOCATION_PATH)
r0   r1   r2   r3   r4   ÚmetadataÚclient_authenticatorÚroutesÚregistration_handlerÚrevocation_handlers
             r#   Úcreate_auth_routesrJ   E   s—  € ô ˜
Ô#à"=Ò"\ÔAZÓA\ÐØ+ÒBÔ/@Ó/BÐÜØØ!Ø#Øó	€Hô /¨xÓ8Ðô 	Ø5Ü$Ü Ó)×0Ñ0Ø˜	Ð"óð ˜IÐ&ô	
ô 	Üô *¨(Ó3×:Ñ:Ø˜F�Oô	
ô 	ÜÜ$Ü˜XÐ';Ó<×CÑCØ˜Ð#óð ˜YÐ'ô	
ð!€Fð4 #×*Ò*Ü2ØØ/ô 
Ðð 	�‰ÜÜ!Ü(Ø(×/Ñ/Ø˜YÐ'óð   Ð+ôô		
ð ×!Ò!Ü.¨xÐ9MÓNÐØ�‰ÜÜÜ(Ø&×-Ñ-Ø˜YÐ'óð   Ð+ôô		
ð €Mr%   c                 ó   — t        t        | «      j                  d«      t        z   «      }t        t        | «      j                  d«      t        z   «      }t        | |||j                  dgd ddgddgd |d d d d dg¬«      }|j                  r/t        t        | «      j                  d«      t        z   «      |_	        |j                  r8t        t        | «      j                  d«      t        z   «      |_        ddg|_        |S )	Nú/ÚcodeÚauthorization_codeÚrefresh_tokenÚclient_secret_postÚclient_secret_basicÚS256)ÚissuerÚauthorization_endpointÚtoken_endpointÚscopes_supportedÚresponse_types_supportedÚresponse_modes_supportedÚgrant_types_supportedÚ%token_endpoint_auth_methods_supportedÚ0token_endpoint_auth_signing_alg_values_supportedÚservice_documentationÚui_locales_supportedÚop_policy_uriÚ
op_tos_uriÚintrospection_endpointÚ code_challenge_methods_supported)r   ÚstrÚrstripr?   r@   r   Úvalid_scopesrA   rC   Úregistration_endpointrD   Úrevocation_endpointÚ*revocation_endpoint_auth_methods_supported)r1   r2   r3   r4   Úauthorization_urlÚ	token_urlrE   s          r#   r=   r=   –   sý   € ô #¤3 z£?×#9Ñ#9¸#Ó#>ÔASÑ#SÓTÐÜœ3˜z›?×1Ñ1°#Ó6¼ÑCÓD€Iô ØØ0Ø Ø4×AÑAØ"( Ø!%Ø3°_ÐEØ/CÐEZÐ.[Ø9=Ø7Ø!ØØØ#Ø*0¨ô€Hð& #×*Ò*Ü)3´C¸
³O×4JÑ4JÈ3Ó4OÔRcÑ4cÓ)dˆÔ&ð ×!Ò!Ü'1´#°j³/×2HÑ2HÈÓ2MÔP_Ñ2_Ó'`ˆÔ$Ø?SÐUjÐ>kˆÔ;à€Or%   Úresource_server_urlc                 ó²   — t        t        | «      «      }|j                  dk7  r|j                  nd}t        |j                  › d|j
                  › d|› �«      S )u…  
    Build RFC 9728 compliant protected resource metadata URL.

    Inserts /.well-known/oauth-protected-resource between host and resource path
    as specified in RFC 9728 Â§3.1.

    Args:
        resource_server_url: The resource server URL (e.g., https://example.com/mcp)

    Returns:
        The metadata URL (e.g., https://example.com/.well-known/oauth-protected-resource/mcp)
    rL   Ú z://z%/.well-known/oauth-protected-resource)r   rb   Úpathr   r   Únetloc)rj   ÚparsedÚresource_paths      r#   Úbuild_resource_metadata_urlrq   ¾   sQ   € ô ”cÐ-Ó.Ó/€Fà#)§;¡;°#Ò#5�F—K’K¸2€MÜ˜Ÿ™˜ s¨6¯=©=¨/Ð9^Ð_lÐ^mÐnÓoÐor%   Úresource_urlÚauthorization_serversrV   Úresource_nameÚresource_documentationc                 óè   — ddl m} ddlm}  || ||||¬«      } ||«      }t	        | «      }	t        t        |	«      «      }
|
j                  }t        |t        |j                  ddg«      ddg¬«      gS )a}  
    Create routes for OAuth 2.0 Protected Resource Metadata (RFC 9728).

    Args:
        resource_url: The URL of this resource server
        authorization_servers: List of authorization servers that can issue tokens
        scopes_supported: Optional list of scopes supported by this resource

    Returns:
        List of Starlette routes for protected resource metadata
    r   )Ú ProtectedResourceMetadataHandler)ÚProtectedResourceMetadata)Úresourcers   rV   rt   ru   r6   r7   r8   )Ú!mcp.server.auth.handlers.metadatarw   Úmcp.shared.authrx   rq   r   rb   rm   r   r/   r>   )rr   rs   rV   rt   ru   rw   rx   rE   r&   Úmetadata_urlro   Úwell_known_paths               r#   Ú create_protected_resource_routesr~   Ñ   s†   € õ$ SÝ9á(ØØ3Ø)Ø#Ø5ô€Hñ /¨xÓ8€Gô /¨|Ó<€Lä”c˜,Ó'Ó(€FØ—k‘k€Oô 	ØÜ$ W§^¡^°e¸YÐ5GÓHØ˜IÐ&ô	
ðð r%   )NNN)5Úcollections.abcr   r   Útypingr   Úurllib.parser   Úpydanticr   Ústarlette.middleware.corsr   Ústarlette.requestsr	   Ústarlette.responsesr
   Ústarlette.routingr   r   Ústarlette.typesr   Ú"mcp.server.auth.handlers.authorizer   rz   r   Ú!mcp.server.auth.handlers.registerr   Úmcp.server.auth.handlers.revoker   Úmcp.server.auth.handlers.tokenr   Ú&mcp.server.auth.middleware.client_authr   Úmcp.server.auth.providerr   Úmcp.server.auth.settingsr   r   Úmcp.server.streamable_httpr   r{   r   r$   r?   r@   rC   rD   Úlistrb   r/   rJ   r=   rq   r~   © r%   r#   ú<module>r’      s½  ðß /Ý Ý !å Ý 4Ý &Ý (ß 5Ý #å CÝ =Ý AÝ =Ý 7Ý FÝ Eß QÝ BÝ )ðD˜Zó Dð4 "Ð Ø€
ØÐ Ø€ð
Ø�w�i ¨I°hÑ,?Ñ!?Ð?Ñ@ð
à˜‘9ð
ð ó
ð  48ØDHØ37ñNØ.¨s°C¸¨}Ñ=ðNàðNð  *¨DÑ0ðNð ";¸TÑ!Að	Nð
 *¨DÑ0ðNð 
ˆ%�[óNðb%Øð%à)¨DÑ0ð%ð ";ð%ð *ð	%ð
 ó%ðPp°Zð pÀJó pð, *.Ø $Ø04ñ,Øð,à 
Ñ+ð,ð ˜3‘i $Ñ&ð,ð ˜‘:ð	,ð
 '¨Ñ-ð,ð 
ˆ%�[ô,r%   