
    ~h                         d dl Z d dl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	  e j                  e      Z G d d	ee      Z G d
 de	      Zy)    N)	JoseError)	JWTClaims)jwt   )
TokenMixin)BearerTokenValidatorc                   *    e Zd Zd Zd Zd Zd Zd Zy)JWTBearerTokenc                 .    | d   |j                         k(  S )N	client_id)get_client_id)selfclients     \/opt/mcp/mcp-sentiment/venv/lib/python3.12/site-packages/authlib/oauth2/rfc7523/validator.pycheck_clientzJWTBearerToken.check_client   s    K F$8$8$:::    c                 $    | j                  d      S )Nscope)getr   s    r   	get_scopezJWTBearerToken.get_scope   s    xx  r   c                     | d   | d   z
  S )Nexpiat r   s    r   get_expires_inzJWTBearerToken.get_expires_in   s    E{T%[((r   c                 6    | d   t        j                          k  S )Nr   )timer   s    r   
is_expiredzJWTBearerToken.is_expired   s    E{TYY[((r   c                      y)NFr   r   s    r   
is_revokedzJWTBearerToken.is_revoked   s    r   N)__name__
__module____qualname__r   r   r   r   r!   r   r   r   r
   r
      s    ;!))r   r
   c                   .     e Zd ZdZeZd fd	Zd Z xZS )JWTBearerTokenValidatorbearerc                 n    t        |   |fi | || _        ddiddiddid}|rd|d|d<   || _        y )N	essentialT)r   r   
grant_type)r)   valueiss)super__init__
public_keyclaims_options)r   r/   issuerrealmextra_attributesr0   	__class__s         r   r.   z JWTBearerTokenValidator.__init__#   sX    3"23$&%t,&-

 26$HN5!,r   c                     	 t        j                  || j                  | j                  | j                        }|j                          |S # t        $ r }t        j                  d|       Y d }~y d }~ww xY w)N)r0   
claims_clszAuthenticate token failed. %r)	r   decoder/   r0   	token_clsvalidater   loggerdebug)r   token_stringclaimserrors       r   authenticate_tokenz*JWTBearerTokenValidator.authenticate_token/   sb    	ZZ#22>>	F OOM 	LL8%@	s   AA 	A4A//A4)NN)	r"   r#   r$   
TOKEN_TYPEr
   r8   r.   r?   __classcell__)r4   s   @r   r&   r&      s    JI
-r   r&   )loggingr   authlib.joser   r   r   rfc6749r   rfc6750r   	getLoggerr"   r:   r
   r&   r   r   r   <module>rG      sG      " "    *			8	$Z "2 r   