Table of Contents

Fournisseur OpenID-Connect

Présentation

OpenID Connect est un protocole basé sur les piles REST, OAuth 2.0 et JOSE. Il est décrit ici : http://openid.net/connect/.

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 :

Configuration

Service OpenID-Connect

Voir le chapître de configuration du service OpenID-Connect.

IssuerDB

Aller dans Paramètres généraux > Modules fournisseurs » OpenID-Connect et configurer :

Par exemple, pour n'autoriser que les utilisateurs authentifiés fortement :
$authenticationLevel > 2

Configuration de LL::NG en "Relying Party" (client)

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"
}

Configuration du client (Relying Party) dans LL::NG

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.

Attributs exportés

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
email chaîne mail
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:

L'attribut spécifique 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:

Options

Extra claims

Associate attributes to extra claims if the RP request them, for example birthbirthplace birthcountry