HOME


Mini Shell 1.0
DIR: /lib/python3/dist-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/
Upload File :
Current File : //lib/python3/dist-packages/oauthlib/oauth2/rfc6749/endpoints/__pycache__/metadata.cpython-312.pyc
�

�c")���dZddlZddlZddlZddlmZmZddlmZddl	m
Z
mZddlm
Z
dd	lmZdd
lmZej$e�ZGd�de
�Zy)
z�
oauthlib.oauth2.rfc6749.endpoint.metadata
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

An implementation of the `OAuth 2.0 Authorization Server Metadata`.

.. _`OAuth 2.0 Authorization Server Metadata`: https://tools.ietf.org/html/rfc8414
�N�)�grant_types�utils�)�AuthorizationEndpoint)�BaseEndpoint�catch_errors_and_unavailability)�IntrospectEndpoint)�RevocationEndpoint)�
TokenEndpointc�X�eZdZdZidfd�Ze		dd��Zd
d�Zd�Zd�Z	d	�Z
d
�Zd�Zy)�MetadataEndpointa�OAuth2.0 Authorization Server Metadata endpoint.

   This specification generalizes the metadata format defined by
   `OpenID Connect Discovery 1.0` in a way that is compatible
   with OpenID Connect Discovery while being applicable to a wider set
   of OAuth 2.0 use cases.  This is intentionally parallel to the way
   that OAuth 2.0 Dynamic Client Registration Protocol [`RFC7591`_]
   generalized the dynamic client registration mechanisms defined by
   OpenID Connect Dynamic Client Registration 1.0
   in a way that is compatible with it.

   .. _`OpenID Connect Discovery 1.0`: https://openid.net/specs/openid-connect-discovery-1_0.html
   .. _`RFC7591`: https://tools.ietf.org/html/rfc7591
   Tc���t|t�sJ�|D]}t|t�r�J�tj|�||_||_||_|j�|_y)N)	�
isinstance�dictr�__init__�raise_errors�	endpoints�initial_claims�validate_metadata_server�claims)�selfrrr�endpoints     �L/usr/lib/python3/dist-packages/oauthlib/oauth2/rfc6749/endpoints/metadata.pyrzMetadataEndpoint.__init__(sh���&�$�'�'�'�!�	6�H��h��5�5�5�	6�	���d�#�(���"���$����3�3�5���Nc�P�ddd�}|tj|j�dfS)z!Create metadata response
        zapplication/json�*)zContent-TypezAccess-Control-Allow-Origin��)�json�dumpsr)r�uri�http_method�body�headerss     r�create_metadata_responsez)MetadataEndpoint.create_metadata_response3s-��/�+.�
����
�
�4�;�;�/��4�4rc�|�|jsy||vr|rtdj|���y|rjtj||�stdj|||���d||vsd||vsd||vrtdj|||���y|r3||jd�stdj|||���y|rkt
||t�std	j|||���||D]1}t
|t�r�td
j||||���yy)Nzkey {} is a mandatory metadata.zkey {}: {} must be an HTTPS URL�?�&�#z8key {}: {} must not contain query or fragment components�httpzkey {}: {} must be an URLzkey {}: {} must be an Arrayz/array {}: {} must contains only string (not {}))	r�
ValueError�formatr�is_secure_transport�
startswithr�list�str)r�array�key�is_required�is_list�is_url�	is_issuer�elems        r�validate_metadataz"MetadataEndpoint.validate_metadata>se��� � ���e��� �!B�!I�!I�#�!N�O�O����,�,�U�3�Z�8� �!B�!I�!I�#�u�UX�z�!Z�[�[��e�C�j� �C�5��:�$5���c�
�9J� �![�!b�!b�cf�hm�nq�hr�!s�t�t�:K����:�(�(��0� �!<�!C�!C�C��s��!T�U�U�1���e�C�j�$�/� �!>�!E�!E�c�5�QT�:�!V�W�W��c�
�
v��!�$��,�$�%V�%]�%]�^a�ch�il�cm�os�%t�u�u�
v�rc��|jj|jj��|jdddg�|j	|dd��|j	|dd��|j	|ddd��y	)
z�
        If the token endpoint is used in the grant type, the value of this
        parameter MUST be the same as the value of the "grant_type"
        parameter passed to the token endpoint defined in the grant type
        definition.
        �%token_endpoint_auth_methods_supported�client_secret_post�client_secret_basicT�r4�0token_endpoint_auth_signing_alg_values_supported�token_endpoint�r3r5N)�_grant_types�extend�keys�
setdefaultr8�rrrs   r�validate_metadata_tokenz(MetadataEndpoint.validate_metadata_tokenWs���	
��� � ��!6�!6�!;�!;�!=�>����A�DX�Zo�Cp�q����v�'N�X\��]����v�'Y�cg��h����v�'7�T�RV��Wrc
��|jdttd�|jj	����|jdddg�d|dvr|j
j
d�|j|ddd�	�|j|dd�
�d|dvr�|jd}t|tj�st|d�r|j}|jd
t|jj	���|j|d
d�
�|j|ddd��y)N�response_types_supportedc��|dk7S)N�none�)�xs r�<lambda>zBMetadataEndpoint.validate_metadata_authorization.<locals>.<lambda>gs
���V��r�response_modes_supported�query�fragment�token�implicitT)r3r4r=�code�
default_grant� code_challenge_methods_supported�authorization_endpointr@)rDr/�filter�_response_typesrCrA�appendr8rr�AuthorizationCodeGrant�hasattrrT�_code_challenge_methods)rrr�
code_grants    r�validate_metadata_authorizationz0MetadataEndpoint.validate_metadata_authorizationes:�����4��v�&;�X�=U�=U�=Z�=Z�=\�]�^�	`����4�w�
�6K�L�
�f�7�8�8����$�$�Z�0����v�'A�t�]a��b����v�'A�4��P��V�6�7�7�!�1�1�&�9�J��j�+�*L�*L�M�RY�Zd�fu�Rv�'�5�5�
����@�"�:�#E�#E�#J�#J�#L�M�
O��"�"�6�+M�W[�"�\����v�'?�T�Z^��_rc��|jdddg�|j|dd��|j|dd��|j|ddd��y)	N�*revocation_endpoint_auth_methods_supportedr;r<Tr=�5revocation_endpoint_auth_signing_alg_values_supported�revocation_endpointr@�rDr8rEs   r�validate_metadata_revocationz-MetadataEndpoint.validate_metadata_revocation|sf�����F�/�1F�G�	I�	
���v�'S�]a��b����v�'^�hl��m����v�'<�$�W[��\rc��|jdddg�|j|dd��|j|dd��|j|ddd��y)	N�-introspection_endpoint_auth_methods_supportedr;r<Tr=�8introspection_endpoint_auth_signing_alg_values_supported�introspection_endpointr@rcrEs   r�validate_metadata_introspectionz0MetadataEndpoint.validate_metadata_introspection�sf�����I�/�1F�G�	I�	
���v�'V�`d��e����v�'a�ko��p����v�'?�T�Z^��_rc��tj|j�}|j|ddd��|j|dd��|j|dd��|j|dd��|j|d	d��|j|d
d��|j|dd��g|_|j
D]�}t
|t�r|j||�t
|t�r|j||�t
|t�r|j||�t
|t�s�z|j||���|jd|j�|j|dd��|S)
a�	
        Authorization servers can have metadata describing their
        configuration.  The following authorization server metadata values
        are used by this specification. More details can be found in
        `RFC8414 section 2`_ :

       issuer
          REQUIRED

       authorization_endpoint
          URL of the authorization server's authorization endpoint
          [`RFC6749#Authorization`_].  This is REQUIRED unless no grant types are supported
          that use the authorization endpoint.

       token_endpoint
          URL of the authorization server's token endpoint [`RFC6749#Token`_].  This
          is REQUIRED unless only the implicit grant type is supported.

       scopes_supported
          RECOMMENDED.

       response_types_supported
          REQUIRED.

       Other OPTIONAL fields:
          jwks_uri,
          registration_endpoint,
          response_modes_supported

       grant_types_supported
          OPTIONAL.  JSON array containing a list of the OAuth 2.0 grant
          type values that this authorization server supports.  The array
          values used are the same as those used with the "grant_types"
          parameter defined by "OAuth 2.0 Dynamic Client Registration
          Protocol" [`RFC7591`_].  If omitted, the default value is
          "["authorization_code", "implicit"]".

       token_endpoint_auth_methods_supported

       token_endpoint_auth_signing_alg_values_supported

       service_documentation

       ui_locales_supported

       op_policy_uri

       op_tos_uri

       revocation_endpoint

       revocation_endpoint_auth_methods_supported

       revocation_endpoint_auth_signing_alg_values_supported

       introspection_endpoint

       introspection_endpoint_auth_methods_supported

       introspection_endpoint_auth_signing_alg_values_supported

       code_challenge_methods_supported

       Additional authorization server metadata parameters MAY also be used.
       Some are defined by other specifications, such as OpenID Connect
       Discovery 1.0 [`OpenID.Discovery`_].

        .. _`RFC8414 section 2`: https://tools.ietf.org/html/rfc8414#section-2
        .. _`RFC6749#Authorization`: https://tools.ietf.org/html/rfc6749#section-3.1
        .. _`RFC6749#Token`: https://tools.ietf.org/html/rfc6749#section-3.2
        .. _`RFC7591`: https://tools.ietf.org/html/rfc7591
        .. _`OpenID.Discovery`: https://openid.net/specs/openid-connect-discovery-1_0.html
        �issuerT)r3r6�jwks_uri)r5�scopes_supportedr=�service_documentation�ui_locales_supported�
op_policy_uri�
op_tos_uri�grant_types_supported)�copy�deepcopyrr8rArrrrFrr^rrdr
rirDrEs   rrz)MetadataEndpoint.validate_metadata_server�sm��T���t�2�2�3�����v�x�T�T��R����v�z�$��?����v�'9�4��H����v�'>�t��L����v�'=�t��L����v��t��D����v�|�D��A�������	G�H��(�M�2��,�,�V�X�>��(�$9�:��4�4�V�X�F��(�$6�7��1�1�&�(�C��(�$6�7��4�4�V�X�F�	G�	���1�4�3D�3D�E����v�'>���M��
r)�GETNN)FFFF)
�__name__�
__module__�__qualname__�__doc__rr	r%r8rFr^rdrirrKrrrrsQ��
�*,�$�	6�%�DH�)-�5�%�5�v�2X�`�.]�`�brr)ryrsr�logging�rr�
authorizationr�baserr	�
introspectr
�
revocationrrQr�	getLoggerrv�logrrKrr�<module>r�sG������!�0�?�*�*� ��g����!��W�|�Wr