c")dZddlZddlZddlZddlmZmZddlmZddl m Z m Z ddl m Z dd lmZdd lmZej$eZGd 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_typesutils)AuthorizationEndpoint) BaseEndpointcatch_errors_and_unavailability)IntrospectEndpoint)RevocationEndpoint) TokenEndpointcXeZdZdZidfdZe d dZd dZdZdZ d Z d Z d Z y)MetadataEndpointaOAuth2.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 Tct|tsJ|D]}t|trJtj|||_||_||_|j|_y)N) isinstancedictr__init__ raise_errors endpointsinitial_claimsvalidate_metadata_serverclaims)selfrrrendpoints L/usr/lib/python3/dist-packages/oauthlib/oauth2/rfc6749/endpoints/metadata.pyrzMetadataEndpoint.__init__(sh&$'''! 6Hh 5 55 6 d#("$335 NcPddd}|tj|jdfS)z!Create metadata response zapplication/json*)z Content-TypezAccess-Control-Allow-Origin)jsondumpsr)ruri http_methodbodyheaderss rcreate_metadata_responsez)MetadataEndpoint.create_metadata_response3s- /+.  4;;/44rc||jsy||vr|rtdj|y|rjtj||stdj|||d||vsd||vsd||vrtdj|||y|r3||j dstdj|||y|rkt ||tstd j|||||D]1}t |trtd j||||yy) Nzkey {} is a mandatory metadata.zkey {}: {} must be an HTTPS URL?&#z8key {}: {} must not contain query or fragment componentshttpzkey {}: {} must be an URLzkey {}: {} must be an Arrayz/array {}: {} must contains only string (not {})) r ValueErrorformatris_secure_transport startswithrliststr)rarraykey is_requiredis_listis_url is_issuerelems rvalidate_metadataz"MetadataEndpoint.validate_metadata>se   e  !B!I!I#!NOO,,U3Z8 !B!I!I#uUXz!Z[[eCj C5:$5c 9J ![!b!bcfhmnqhr!stt:K:((0 !!E!Ec5QT:!VWWc  v!$,$%V%]%]^achilcmos%tuu vrc |jj|jj|jdddg|j |dd|j |dd|j |dddy ) 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_supportedclient_secret_postclient_secret_basicTr40token_endpoint_auth_signing_alg_values_supportedtoken_endpointr3r5N) _grant_typesextendkeys setdefaultr8rrrs rvalidate_metadata_tokenz(MetadataEndpoint.validate_metadata_tokenWs   !6!6!;!;!=>ADXZoCpq v'NX\] v'Ycgh v'7TRVWrc |jdttd|jj |jdddgd|dvr|j j d|j|ddd |j|dd d |dvr|jd }t|tjst|d r |j}|jd t|jj |j|d d |j|dddy)Nresponse_types_supportedc |dk7S)Nnone)xs rzBMetadataEndpoint.validate_metadata_authorization..gs V rresponse_modes_supportedqueryfragmenttokenimplicitT)r3r4r=code default_grant code_challenge_methods_supportedauthorization_endpointr@)rDr/filter_response_typesrCrAappendr8rrAuthorizationCodeGranthasattrrT_code_challenge_methods)rrr code_grants rvalidate_metadata_authorizationz0MetadataEndpoint.validate_metadata_authorizationes:4v&;X=U=U=Z=Z=\]^ `4w 6KL f78 8    $ $Z 0 v'At]ab v'A4P V67 7!11&9Jj+*L*LMRYZdfuRv'55   @":#E#E#J#J#LM O  " "6+MW[ " \ v'?TZ^_rc|jdddg|j|dd|j|dd|j|dddy) N*revocation_endpoint_auth_methods_supportedr;r<Tr=5revocation_endpoint_auth_signing_alg_values_supportedrevocation_endpointr@rDr8rEs rvalidate_metadata_revocationz-MetadataEndpoint.validate_metadata_revocation|sfF/1FG I v'S]ab v'^hlm v'<$W[\rc|jdddg|j|dd|j|dd|j|dddy) N-introspection_endpoint_auth_methods_supportedr;r<Tr=8introspection_endpoint_auth_signing_alg_values_supportedintrospection_endpointr@rcrEs rvalidate_metadata_introspectionz0MetadataEndpoint.validate_metadata_introspectionsfI/1FG I v'V`de v'akop v'?TZ^_rctj|j}|j|ddd|j|dd|j|dd|j|dd|j|d d|j|d d|j|d dg|_|j D]}t |tr|j||t |tr|j||t |tr|j||t |tsz|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)r3r6jwks_uri)r5scopes_supportedr=service_documentationui_locales_supported op_policy_uri op_tos_urigrant_types_supported)copydeepcopyrr8rArrr rFrr^r rdr rirDrEs rrz)MetadataEndpoint.validate_metadata_serversmTt223 vxTTR vz$? v'94H v'>tL v'=tL vtD v|DA GH(M2,,VX>($9:44VXF($6711&(C($6744VXF G 143D3DE v'>M r)GETNN)FFFF) __name__ __module__ __qualname____doc__rr r%r8rFr^rdrirrKrrrrsQ *,$ 6%DH)-5%5v2 X`.]`brr)ryrsrloggingrr authorizationrbaserr introspectr revocationr rQr getLoggerrvlogrrKrrrsG !0?** g!W|Wr