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_age
Voir 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
birth
⇒ birthplace birthcountry