Table of Contents

OpenID Connect

Authentification Utilisateurs Mot-de-passe

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 un client OpenID-Connect (« Relying Party » RP), ce qui permet de fédérer <a1>LL::NG</a1> avec : L'identité utilisateur sera récupérée via in jeton d'identification, et les attributs utilisateurs via le point d'accès UserInfo.

Comme RP, LL::NG supporte de nombreuses fonctionnalités OpenID-Connect :

On peut utiliser ce module d'authentification pour lier un serveur LL::NG à n'importe quel fournisseur OpenID-Connect. Quelques exemples, avec leur documentation :

Google France Connect

Configuration

Service OpenID-Connect

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

Authentification et base d'utilisateurs

Dans Paramètres généraux > Modules d'authentification, choisir :

Comme les mots-de-passe ne sernt pas gérés par LL::NG, il est possile de désactiver le module mots-de-passe du menu.

Ensuite dans Paramètres généraux > Paramètres d'authentification > Paramètres OpenID-Connect , on peut indiquer :

Enregistrer LL::NG dans un fournisseur d'identité OpenID-Connect

Pour enregistrer LL::NG, il faut renseigner quelques informations telles le nom d'application ou le logo. Une des informations exigées est l'URL de redirection (une ou plusieurs).

Pour connaître cette information, prendre simplement l'URL et le paramètre GET de rappel, par exemple :

Si le backend choix est utilisé, il faut ajouter le paramètre choix dans l'URL de redirection

Après enregistrement, l'OP doit donner un identifiant et un secret clients, qui seront utilisé pour configurer l'OP dans LL::NG.

Déclarer le fournisseur OpenID Connect dans LL::NG

Dans le manager, choisir Fournisseurs OpenID-Connect et cliquer sur Ajouter un fournisseur OpenID-Connect. Donner un nom technique (sans espaces ni caratères speciaux), tel “sample-op” ;

On peut ensuite accéder à la configuration de cet OP.

Métadonnée

L'OP peut publier sa métadonnée dans un fichier JSON (voir par exemple la métadonnée Google). Copier le contenu de ce fichie dans l'emplacement dédié.

À défaut de métadonnée, il faut les écrire. Les champs obligatoires sont :

On peut aussi définir :

Modèle exemple :

{
  "issuer": "https://auth.example.com/",
  "authorization_endpoint": "https://auth.example.com/oauth2/authorize",
  "token_endpoint": "https://auth.example.com/oauth2/token",
  "userinfo_endpoint": "https://auth.example.com/oauth2/userinfo",
  "end_session_endpoint":"https://auth.example.com/oauth2/logout"
}

Donnée JWKS

JWKS est un fichier JSON contenant des clefs publiques. LL::NG peut les récupérer autoatiquement si jwks_uri est défini dans la métadonnée. Sinon copier le contenu du fichier JSON dans l'emplacement dédié.

Si le fournisseur OpenID-Connect n'utilise qu'une clef symétrique de chiffrement, la donnée JWKS n'est pas nécessaire.

Attributs exportés

Définir ici la correspondance entre le contenu de la sessions LL::NG et les champs fournis dans la réponse UserInfo. Les champs sont définis dans le standard OpenID-Connect, et dépendent de la portée requise par LL::NG (voir les options dans le prochain chapitre).

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:

Options