Aller au contenu principal

2. Authorization Server Metadata (Métadonnées du serveur d'autorisation)

Le serveur d'autorisation (Authorization Server) peut avoir des métadonnées (Metadata) décrivant sa configuration. Cette spécification utilise les valeurs de métadonnées du serveur d'autorisation suivantes, qui sont enregistrées dans le registre IANA "OAuth Authorization Server Metadata" établi à la section 7.1 :

issuer

  • Requis (REQUIRED). L'identifiant d'émetteur (issuer identifier) du serveur d'autorisation, qui est une URL utilisant le schéma "https" sans composant de requête (query) ou de fragment (fragment). Les métadonnées du serveur d'autorisation sont publiées à un emplacement ".well-known" dérivé de cet identifiant d'émetteur conformément à la RFC 5785 [RFC5785], comme décrit à la section 3. L'identifiant d'émetteur est utilisé pour prévenir les attaques de confusion de serveur d'autorisation (authorization server mix-up attacks), comme décrit dans "OAuth 2.0 Mix-Up Mitigation" [MIX-UP].

authorization_endpoint

  • L'URL du point de terminaison d'autorisation (Authorization Endpoint) [RFC6749] du serveur d'autorisation. Ceci est requis (REQUIRED) sauf si aucun type d'autorisation (grant type) utilisant le point de terminaison d'autorisation n'est pris en charge.

token_endpoint

  • L'URL du point de terminaison de jeton (Token Endpoint) [RFC6749] du serveur d'autorisation. Ceci est requis (REQUIRED) sauf si seul le type d'autorisation implicite (implicit grant type) est pris en charge.

jwks_uri

  • Optionnel (OPTIONAL). L'URL du document JWK Set [JWK] du serveur d'autorisation. Le document référencé contient les clés de signature (signing key) utilisées par le client (Client) pour vérifier les signatures provenant du serveur d'autorisation. Cette URL doit (MUST) utiliser le schéma "https". Le JWK Set peut (MAY) également contenir les clés de chiffrement (encryption key) du serveur, que les clients utilisent pour chiffrer les requêtes au serveur. Lorsque des clés de signature et de chiffrement sont disponibles, toutes les clés dans le JWK Set référencé sont requises (REQUIRED) d'avoir une valeur de paramètre "use" (utilisation de clé publique, public key use) pour indiquer l'utilisation prévue de chaque clé.

registration_endpoint

  • Optionnel (OPTIONAL). L'URL du point de terminaison d'enregistrement dynamique de client OAuth 2.0 (Dynamic Client Registration Endpoint) [RFC7591] du serveur d'autorisation.

scopes_supported

  • Recommandé (RECOMMENDED). Un tableau JSON contenant une liste des valeurs de "scope" OAuth 2.0 [RFC6749] prises en charge par ce serveur d'autorisation. Même lors de l'utilisation de ce paramètre, le serveur peut (MAY) choisir de ne pas publier certaines valeurs de portée (scope) prises en charge.

response_types_supported

  • Requis (REQUIRED). Un tableau JSON contenant une liste des valeurs OAuth 2.0 "response_type" prises en charge par ce serveur d'autorisation. Les valeurs de tableau utilisées sont les mêmes que celles utilisées avec le paramètre "response_types" défini par "OAuth 2.0 Dynamic Client Registration Protocol" [RFC7591].

response_modes_supported

  • Optionnel (OPTIONAL). Un tableau JSON contenant une liste des valeurs OAuth 2.0 "response_mode" prises en charge par ce serveur d'autorisation, comme spécifié dans "OAuth 2.0 Multiple Response Type Encoding Practices" [OAuth.Responses]. Si omis, la valeur par défaut est ["query", "fragment"]. La valeur de mode de réponse "form_post" est également définie dans "OAuth 2.0 Form Post Response Mode" [OAuth.Post].

grant_types_supported

  • Optionnel (OPTIONAL). Un tableau JSON contenant une liste des valeurs de type d'autorisation (grant type) OAuth 2.0 prises en charge par ce serveur d'autorisation. Les valeurs de tableau utilisées sont les mêmes que celles utilisées avec le paramètre "grant_types" défini par "OAuth 2.0 Dynamic Client Registration Protocol" [RFC7591]. Si omis, la valeur par défaut est ["authorization_code", "implicit"].

token_endpoint_auth_methods_supported

  • Optionnel (OPTIONAL). Un tableau JSON contenant une liste des méthodes d'authentification client (client authentication method) prises en charge par ce point de terminaison de jeton. Les valeurs de méthode d'authentification client sont utilisées par le paramètre "token_endpoint_auth_method" défini à la section 2 de [RFC7591]. Si omis, la valeur par défaut est "client_secret_basic" -- le schéma d'authentification de base HTTP (HTTP Basic Authentication Scheme) spécifié à la section 2.3.1 d'OAuth 2.0 [RFC6749].

token_endpoint_auth_signing_alg_values_supported

  • Optionnel (OPTIONAL). Un tableau JSON contenant une liste des algorithmes de signature JWS (valeurs "alg") pris en charge par le point de terminaison de jeton pour la signature de JWT [JWT] lors de l'utilisation des méthodes d'authentification "private_key_jwt" et "client_secret_jwt" pour l'authentification client au point de terminaison de jeton. Si l'une de ces deux méthodes d'authentification est spécifiée dans l'entrée "token_endpoint_auth_methods_supported", cette entrée de métadonnées doit (MUST) être présente. Si cette entrée est omise, aucun algorithme par défaut n'est implicite. Le serveur devrait (SHOULD) prendre en charge "RS256". La valeur "none" ne doit pas (MUST NOT) être utilisée.

service_documentation

  • Optionnel (OPTIONAL). URL d'une page contenant des informations lisibles par l'homme (human-readable information) que les développeurs pourraient vouloir ou avoir besoin de connaître lors de l'utilisation du serveur d'autorisation. En particulier, si le serveur d'autorisation ne prend pas en charge l'enregistrement dynamique de client (Dynamic Client Registration), des informations sur la façon d'enregistrer les clients doivent être fournies dans cette documentation.

ui_locales_supported

  • Optionnel (OPTIONAL). Langues et scripts pris en charge pour l'interface utilisateur, représentés sous forme de tableau JSON de valeurs de balises de langue provenant de BCP 47 [RFC5646]. Si omis, l'ensemble des langues et scripts pris en charge n'est pas spécifié.

op_policy_uri

  • Optionnel (OPTIONAL). URL fournie par le serveur d'autorisation à la personne enregistrant un client pour lire les exigences du serveur d'autorisation concernant la façon dont le client peut utiliser les données fournies par le serveur d'autorisation. Si fourni, le processus d'enregistrement devrait (SHOULD) afficher cette URL à la personne enregistrant le client. Comme indiqué à la section 5, bien que l'identifiant "op_policy_uri" semble spécifique à OpenID, son utilisation dans cette spécification fait en fait référence à une fonctionnalité OAuth 2.0 générale et non spécifique à OpenID Connect.

op_tos_uri

  • Optionnel (OPTIONAL). URL fournie par le serveur d'autorisation à la personne enregistrant un client pour lire les conditions d'utilisation du service (terms of service) du serveur d'autorisation. Si fourni, le processus d'enregistrement devrait (SHOULD) afficher cette URL à la personne enregistrant le client. Comme indiqué à la section 5, bien que l'identifiant "op_tos_uri" semble spécifique à OpenID, son utilisation dans cette spécification fait en fait référence à une fonctionnalité OAuth 2.0 générale et non spécifique à OpenID Connect.

revocation_endpoint

  • Optionnel (OPTIONAL). L'URL du point de terminaison de révocation OAuth 2.0 (Revocation Endpoint) [RFC7009] du serveur d'autorisation.

revocation_endpoint_auth_methods_supported

  • Optionnel (OPTIONAL). Un tableau JSON contenant une liste des méthodes d'authentification client prises en charge par ce point de terminaison de révocation. Les valeurs de méthode d'authentification client valides sont celles enregistrées dans le registre IANA "OAuth Token Endpoint Authentication Methods" [IANA.OAuth.Parameters]. Si omis, la valeur par défaut est "client_secret_basic" -- le schéma d'authentification de base HTTP spécifié à la section 2.3.1 d'OAuth 2.0 [RFC6749].

revocation_endpoint_auth_signing_alg_values_supported

  • Optionnel (OPTIONAL). Un tableau JSON contenant une liste des algorithmes de signature JWS (valeurs "alg") pris en charge par le point de terminaison de révocation pour la signature de JWT [JWT] lors de l'utilisation des méthodes d'authentification "private_key_jwt" et "client_secret_jwt" pour l'authentification client au point de terminaison de révocation. Si l'une de ces deux méthodes d'authentification est spécifiée dans l'entrée "revocation_endpoint_auth_methods_supported", cette entrée de métadonnées doit (MUST) être présente. Si cette entrée est omise, aucun algorithme par défaut n'est implicite. La valeur "none" ne doit pas (MUST NOT) être utilisée.

introspection_endpoint

  • Optionnel (OPTIONAL). L'URL du point de terminaison d'introspection OAuth 2.0 (Introspection Endpoint) [RFC7662] du serveur d'autorisation.

introspection_endpoint_auth_methods_supported

  • Optionnel (OPTIONAL). Un tableau JSON contenant une liste des méthodes d'authentification client prises en charge par ce point de terminaison d'introspection. Les valeurs de méthode d'authentification client valides sont celles enregistrées dans le registre IANA "OAuth Token Endpoint Authentication Methods" [IANA.OAuth.Parameters] ou dans le registre IANA "OAuth Access Token Types" [IANA.OAuth.Parameters]. (Pour la raison indiquée à la section 7.2, ces valeurs sont et resteront distinctes.) Si omis, l'ensemble des méthodes d'authentification prises en charge doit (MUST) être déterminé par d'autres moyens.

introspection_endpoint_auth_signing_alg_values_supported

  • Optionnel (OPTIONAL). Un tableau JSON contenant une liste des algorithmes de signature JWS (valeurs "alg") pris en charge par le point de terminaison d'introspection pour la signature de JWT [JWT] lors de l'utilisation des méthodes d'authentification "private_key_jwt" et "client_secret_jwt" pour l'authentification client au point de terminaison d'introspection. Si l'une de ces deux méthodes d'authentification est spécifiée dans l'entrée "introspection_endpoint_auth_methods_supported", cette entrée de métadonnées doit (MUST) être présente. Si cette entrée est omise, aucun algorithme par défaut n'est implicite. La valeur "none" ne doit pas (MUST NOT) être utilisée.

code_challenge_methods_supported

  • Optionnel (OPTIONAL). Un tableau JSON contenant une liste des méthodes de défi de code (code challenge method) Proof Key for Code Exchange (PKCE) [RFC7636] prises en charge par ce serveur d'autorisation. Les valeurs de méthode de défi de code sont utilisées dans le paramètre "code_challenge_method" défini à la section 4.3 de [RFC7636]. Les valeurs de méthode de défi de code valides sont celles enregistrées dans le registre IANA "PKCE Code Challenge Methods" [IANA.OAuth.Parameters]. Si omis, le serveur d'autorisation ne prend pas en charge PKCE.

D'autres paramètres de métadonnées du serveur d'autorisation peuvent (MAY) également être utilisés. Certains sont définis par d'autres spécifications, comme OpenID Connect Discovery 1.0 [OpenID.Discovery].

2.1. Signed Authorization Server Metadata (Métadonnées signées du serveur d'autorisation)

En plus des éléments JSON, les valeurs de métadonnées peuvent (MAY) également être fournies en tant que valeur "signed_metadata", qui est un JSON Web Token (JWT) [JWT] qui affirme en tant que bundle les valeurs de métadonnées concernant le serveur d'autorisation. L'ensemble des revendications (claim) pouvant être utilisées dans les métadonnées signées est défini à la section 2. Les métadonnées signées doivent (MUST) être signées numériquement ou MACées à l'aide de JSON Web Signature (JWS) [JWS], et doivent (MUST) contenir une revendication "iss" (émetteur, issuer) représentant la partie affirmant les revendications dans les métadonnées signées. Les consommateurs de métadonnées qui ne prennent pas en charge cette fonctionnalité peuvent (MAY) ignorer les métadonnées signées. Si le consommateur de métadonnées prend en charge les métadonnées signées, les valeurs de métadonnées communiquées dans les métadonnées signées doivent (MUST) avoir la priorité sur les valeurs correspondantes communiquées à l'aide d'éléments JSON simples.

Les métadonnées signées sont incluses dans l'objet JSON des métadonnées du serveur d'autorisation en utilisant ce membre optionnel (OPTIONAL) :

signed_metadata

  • Un JWT contenant des valeurs de métadonnées concernant le serveur d'autorisation en tant que revendications. Il s'agit d'une valeur de chaîne composée du JWT signé complet. La valeur de métadonnées "signed_metadata" ne devrait pas (SHOULD NOT) apparaître en tant que revendication dans le JWT.