API OpenID Connect : Découverte

, par B. Degoy

Le protocole OpenID Connect nécessite l’utilisation de plusieurs points d’extrémité pour authentifier les utilisateurs et pour demander des ressources, y compris des jetons, des informations sur l’utilisateur et des clés publiques.

Comment un serveur de ressource indépendant du serveur d’autorisation peut-il connaître les fonctionnalités du serveur et y accéder ?

Le document de découverte

Conformément à la spécification OpenID Connect Discovery 1.0, OAuthSD expose ses métadonnées à l’URI :

https://oa.dnc.global/.well-known/openid-configuration

Voici un exemple (non stable) des métadonnées fournies au format JSON :

[JSON]

{
  "issuer"                                : "https://oa.dnc.global",
  "token_endpoint"                        : "https://oa.dnc.global/token",
  "introspection_endpoint"                : "https://oa.dnc.global/introspect",
  "revocation_endpoint"                   : "https://oa.dnc.global/revoke",
  "authorization_endpoint"                : "https://oa.dnc.global/authorize",
  "userinfo_endpoint"                     : "https://oa.dnc.global/userinfo",
  "jwks_uri"                              : "https://oa.dnc.global/keys",
  "scopes_supported"                      : [ "openid",
                                              "profile",
                                              "email",
                                              "address",
                                              "phone"],
  "response_types_supported"              : [ "code",
                                              "id_token",
                                              "token id_token",
                                              "id_token token",
                                              "code id_token" ,
                                              "code token id_token" ],
  "response_modes_supported"              : [ "query",
                                              "fragment",
                                               "form_post" ],
  "grant_types_supported"                 : [ "authorization_code",
                                              "refresh_token",
                                              "password",
                                              "client_credentials",
                                              "urn:ietf:params:oauth:grant-type:jwt-bearer"],      
  "code_challenge_methods_supported"      : [ "S256",
                                              "plain" ],
  "subject_types_supported"               : [ "public" ],                                
  "token_endpoint_auth_methods_supported" : [ "client_secret_basic",
                                              "client_secret_post",
                                              "client_secret_jwt",
                                              "private_key_jwt" ],                                 
  "token_endpoint_auth_signing_alg_values_supported" : 
                                            [ "HS256",
                                              "HS512",
                                              "HS384",
                                              "RS256",
                                              "RS384",
                                              "RS512"],                                 
  "id_token_signing_alg_values_supported" : [ "RS256",
                                              "RS384",
                                              "RS512",
                                              "HS256",
                                              "HS384",
                                              "HS512" ],
  "userinfo_signing_alg_values_supported" : [ "RS256",
                                              "RS384",
                                              "RS512",
                                              "HS256",
                                              "HS384",
                                              "HS512" ],   
  "claim_types_supported"                 : [ "normal" ],   
  "claims_supported"                      : [ "sub",
                                              "iss",
                                              "auth_time",
                                              "acr",
                                              "name",
                                              "given_name",
                                              "family_name",
                                              "nickname",
                                              "email",
                                              "email_verified" ],
  "ui_locales_supported"                  : [ "fr" ],   
  "claims_parameter_supported"            : true,   
  "request_parameter_supported"           : false,
  "request_uri_parameter_supported"       : false,
  "require_request_uri_registration"      : false

Voir également :
– API OpenId Connect : Point d’extrémité d’informations sur les clefs (Keys Endpoint)