LL::NG peut agir comme fournisseur OpenID-Connect (OP). Il répond aux requêtes OpenID-Connect pour délivrer l'identité de l'utilisateur (via un jeton identifiant) et des informations (via le point d'accès "User Info").
Comme OP, LL::NG supporte de nombreuses fonctionnalités OpenID-Connect :
prompt, display, ui_locales et max_ageVoir le chapître de configuration du service OpenID-Connect.
Aller dans Paramètres généraux > Modules fournisseurs » OpenID-Connect et configurer :
Activé.^/oauth2/ sauf s'il faut un autre chemin (dans ce cas, adapter la configuration Apache)$authenticationLevel > 2
Chaque client (Relying Party) a sa propre forme de configuration. LL::NG publie ses métadonnées OpenID-Connect pour faciliter la configuration du client.
La métadonnée se trouve dans l'URL standard “Well Known” : http://auth.example.com/.well-known/openid-configuration
Un exemple de son contenu :
{ "end_session_endpoint" : "http://auth.example.com/oauth2/logout", "jwks_uri" : "http://auth.example.com/oauth2/jwks", "token_endpoint_auth_methods_supported" : [ "client_secret_post", "client_secret_basic" ], "token_endpoint" : "http://auth.example.com/oauth2/token", "response_types_supported" : [ "code", "id_token", "id_token token", "code id_token", "code token", "code id_token token" ], "userinfo_signing_alg_values_supported" : [ "none", "HS256", "HS384", "HS512", "RS256", "RS384", "RS512" ], "id_token_signing_alg_values_supported" : [ "none", "HS256", "HS384", "HS512", "RS256", "RS384", "RS512" ], "userinfo_endpoint" : "http://auth.example.com/oauth2/userinfo", "request_uri_parameter_supported" : "true", "acr_values_supported" : [ "loa-4", "loa-1", "loa-3", "loa-5", "loa-2" ], "request_parameter_supported" : "true", "subject_types_supported" : [ "public" ], "issuer" : "http://auth.example.com/", "grant_types_supported" : [ "authorization_code", "implicit", "hybrid" ], "authorization_endpoint" : "http://auth.example.com/oauth2/authorize", "check_session_iframe" : "http://auth.example.com/oauth2/checksession", "scopes_supported" : [ "openid", "profile", "email", "address", "phone" ], "require_request_uri_registration" : "false", "registration_endpoint" : "http://auth.example.com/oauth2/register" }
Aller dans le Manager et choisir Clients OpenID-Connect, cliquer ensuite sur Ajouter un client OpenID. Donner un nom technique (sans espaces ni caratères speciaux), tel “sample-rp” ;
On peut ensuite accéder à la configuration de ce RP.
On peut faire correspondre les noms d'attributs de session LL::NG à des "claim" OpenID-Connect.
| Nom affiché | Type | Exemple de correspondance d'attributs LDAP |
|---|---|---|
| sub | chaîne | uid |
| nom | chaîne | cn |
| given_name | chaîne | givenName |
| family_name | chaîne | sn |
| middle_name | chaîne | |
| nickname | chaîne | |
| preferred_username | chaîne | displayName |
| profile | chaîne | labeledURI |
| picture | chaîne | |
| website | chaîne | |
| chaîne | ||
| email_verified | boolean | |
| gender | chaîne | |
| birthdate | chaîne | |
| zoneinfo | chaîne | |
| locale | chaîne | preferredLanguage |
| phone_number | chaîne | telephoneNumber |
| phone_number_verified | boolean | |
| updated_at | chaîne | |
| formatted | chaîne | registeredAddress |
| street_address | chaîne | street |
| locality | chaîne | l |
| region | chaîne | st |
| postal_code | chaîne | postalCode |
| country | chaîne | co |
Ainsi on peut définir par exemple:
sub n'est pas défini ici, mais dans le paramètre d'attribut "User" (voir ci-dessous).
On peut également définir des "claims" supplémentaires et les lier aux attributs (voir ci-dessous). Il faut ensuite définir la correspondance de ces nouveaux attributs, par exemple:
sub)none, HS256, HS384, HS512, RS256, RS384, RS512
Associate attributes to extra claims if the RP request them, for example birth ⇒ birthplace birthcountry