o
    Df
                     @   s<   d dl mZmZ d dlmZmZmZ dgZG dd dZdS )    )JsonWebToken
JsonWebKey)UserInfoCodeIDTokenImplicitIDTokenAsyncOpenIDMixinc                   @   s(   e Zd Zd	ddZdd Zd
ddZdS )r   Fc              	      s   |   I d H }|d}|r|s|S |d}|std| jdi | j4 I d H }|jd|ddI d H }|  | }W d   I d H  n1 I d H sOw   Y  || jd< |S )Njwksjwks_urizMissing "jwks_uri" in metadataGETT)withhold_token )	load_server_metadatagetRuntimeError
client_clsclient_kwargsrequestraise_for_statusjsonserver_metadata)selfforcemetadatajwk_seturiclientrespr   r   f/home/ubuntu/webapp/venv/lib/python3.10/site-packages/authlib/integrations/base_client/async_openid.pyfetch_jwk_set   s   


(
zAsyncOpenIDMixin.fetch_jwk_setc                    sD   |   I dH }| j|d fi |I dH }|  | }t|S )z+Fetch user info from ``userinfo_endpoint``.Nuserinfo_endpoint)r   r   r   r   r   )r   kwargsr   r   datar   r   r   userinfo   s   zAsyncOpenIDMixin.userinfoNc              
      s  t || jd}d|v r|d |d< t}nt}|  I dH }|du r/d|v r/dd|d gii}|d}|s9dg}t|}|  I dH }	z|j|d	 t	
|	|||d
}
W n! tyv   | jddI dH }	|j|d	 t	
|	|||d
}
Y nw |
ddu rd|
jd< |
jdd t|
S )z9Return an instance of UserInfo from token's ``id_token``.)nonce	client_idaccess_tokenNissuerissvalues%id_token_signing_alg_values_supportedRS256id_token)key
claims_clsclaims_optionsclaims_paramsT)r   nonce_supportedFr#   x   )leeway)dictr$   r   r   r   r   r   r   decoder   import_key_set
ValueErrorparamsvalidater   )r   tokenr#   r.   r/   r-   r   
alg_valuesjwtr   claimsr   r   r   parse_id_token"   sN   



zAsyncOpenIDMixin.parse_id_token)F)N)__name__
__module____qualname__r   r"   r=   r   r   r   r   r      s    
N)	authlib.joser   r   authlib.oidc.corer   r   r   __all__r   r   r   r   r   <module>   s    