Introduction
LemonLDAP::NG est un logiciel open source, créé en 2004 par la Gendarmerie nationale française. Il fournit une solution d' authentification unique distribuée avec gestion centralisée des droits sous licence GPL.
Le logiciel LemonLDAP::NG est issu d'un logiciel créé par Eric German suivant le protocole de gestion d'annuaire LDAP sous TCP/IP pour le Ministère des finances français. La Gendarmerie nationale reprend ce logiciel pour l'élargir et le conformer à ses besoins.
Le logiciel fonctionne avec les serveurs web Apache ou Nginx mais un mode reverse proxy permet de l'utiliser avec des applications exécutées sur un autre serveur (IIS, Tomcat, etc.)3,4.
Il peut gérer plus de 200000 utilisateurs de différentes organisations, il implémente à la fois5 :
- les services de fournisseur d'identité et de service SAML, OpenID, CAS et OpenID Connect6 ;
- peut-être utilisé comme Proxy protocolaire en fédération des identités ;
- l'authentification basée sur LDAP, Kerberos, SQL, Twitter et d'autres protocoles ;
- l'authentification à double facteur (U2F, TOTP, Yubikey, REST ou externe tels SMS ou mails)7
- un système d'authentification unique basé sur des cookies sécurisés ;
- un menu dynamique des applications ;
- un module de réinitialisation de mots de passe ;
- un module d'auto-création de compte ;
- un dispositif de notification ;
- un explorateur de sessions.
Depuis la version 1.9, il propose un connecteur FranceConnect, lui permettant d'être simplement soit fournisseur d'identités, soit fournisseur de services8.
La version 2.0.6 apporte, entre autres évolutions, les nouvelles fonctionnalités suivantes :
- la sur-charge des seconds facteurs et la prise en charge du protocole RADIUS ;
- la possibilité de définir une politique locale des mots de passe ;
- un module de simulation d'identités pour des environnements de formation ;
- un module d'endossement d'identité pouvant être activé à des fins de diagnostic ;
- un module permettant de consulter le profil SSO d'un utilisateur et de vérifier ses droits d'accès ainsi que les en-têtes transmis ;
- un module pour éditer la configuration en lecture seule.
La version 2.0.7 permet un meilleur support du protocole OpenId Connect et apporte de nombreuses améliorations ou correctifs.
La version 2.0.8 offre de nombreuses API et améliorations.
La version 2.0.9 apporte un outil de gestion des sessions, ameliore la gestion des mots de passe, une documentation intégrée au code source et des correctifs.
Pré-requis
- Un serveur OpenLDAP installé et fonctionnel
- FusionDirectory déployé sur le serveur LDAP
- Un nom de domaine avec la gestion de sa zone DNS
- Suite directe de : OpenLDAP : Installation avec FusionDirectory - slash-root.fr
- Le nom de domaine utilisé dans cet article sera : example.com
- LemonLDAP sera déployé sur le même serveur qu'OpenLDAP / FusionDirectory
Installation LemonLDAP
-
Utiliser le dépôt officiel :
sudo cat > /etc/apt/sources.list.d/lemonldap-ng.list << 'EOL' # LemonLDAP::NG repository deb https://lemonldap-ng.org/deb 2.0 main deb-src https://lemonldap-ng.org/deb 2.0 main EOL
-
Récupérer la clef GPG :
wget -O - https://lemonldap-ng.org/_media/rpm-gpg-key-ow2 | sudo apt-key add -
-
Mise à jour du cache apt :
sudo apt update
-
Installer le package principal et le module Perl pour Apache2 :
sudo apt install libapache2-mod-perl2 lemonldap-ng
LemonLDAP est également compatible avec Nginx mais cela ne sera pas abordé dans cet article.
-
Installer le module FCGID pour Apache :
sudo apt install libapache2-mod-fcgid
-
Activer les modules et les configurations :
sudo a2ensite manager-apache2.conf sudo a2ensite portal-apache2.conf sudo a2ensite handler-apache2.conf sudo a2enmod fcgid perl alias rewrite headers
-
Tester la configuration d'Apache2 :
sudo apachectl configtest
-
Redémarrer Apache2 :
sudo systemctl restart apache2
Par défaut, le domaine est
example.com
. Celui-ci peut être changé.
-
Pour changer le nom de domaine par défaut :
sed -i 's/example\.com/mondomaine.local/g' /etc/lemonldap-ng/* /var/lib/lemonldap-ng/conf/lmConf-1.json
Adapter la suite des instructions avec le domaine utilisé en lieu et place d'
example.com
.
Accès Web UI
-
Pour accéder à la Web UI et effectuer les tests nécessaires, il y a 4 enregistrements A à réaliser dans la zone DNS du domaine :
- auth.example.com
- manager.example.com
- test1.example.com
- test2.example.com
C'est 4 URLs sont à rediriger vers le même serveur. test1 et test2 sont là pour simuler 2 applications différentes.
-
Avec un navigateur web, accéder à http://auth.example.com :
Dans un 1er temps, utiliser le login
dwho
avec le mot de passedwho
. Ce compte est local à LemonLDAP et à des droits administrateur sur la plateforme.
- Se rendre sur
WebSSO Manager
ou directement via l'URL : http://manager.example.com :
- La configuration qui va être appliqué peut se faire intégralement par cette Web UI :
-
Afin de pouvoir automatiser tout ce processus plus tard, la configuration sera réalisée en ligne de commande à l'aide de l'outil :
/usr/share/lemonldap-ng/bin/lemonldap-ng-cli help
Activer les applications de démonstration
-
LemonLDAP est fournit avec 2 applications de démonstration qui permettent de lire les en-têtes HTTP. Pour les activer :
sudo a2ensite test-apache2.conf sudo systemctl reload apache2
-
C'est un vhost standard d'Apache2 :
sudo cat /etc/apache2/sites-enabled/test-apache2.conf
-
Remarquer la ligne qui à été ajoutée concernant le SSO :
# SSO protection PerlHeaderParserHandler Lemonldap::NG::Handler::ApacheMP2
-
Vérifier l'accès aux applications de démonstration en se rendant sur :
-
Pas besoin de s'authentifier car cela a été fait l'autre de l'accès à la plateforme LemonLDAP :
- Il est possible de se déconnecter de cette application test1, en bas de la page :
- Lors de la prochaine tentative d'accès, une demande d'authentification de LemonLDAP sera demandée.
Configuration avec OpenLDAP / FusionDirectory
Pour le moment LemonLDAP est en mode démo et utilise une base de compte interne. La configuration de LemonLDAP va consister à utiliser l'annuaire OpenLDAP préalablement déployé avec FusionDirectory. Une chose à savoir est que l'accès au manager est réservé exclusivement à l'utilisateur dwho
de la base de compte interne à LemonLDAP. Lors de la jonction de l'annuaire LDAP à LemonLDAP, la base de compte interne ne sera plus exploitable. Par conséquence, l'accès au WebSSO Manager ne se fera plus. Il y a plusieurs méthodes possibles pour retrouver cet accès. En voici une qui consiste à n'autoriser que l'utilisateur fd-admin
de l'annuaire LDAP :
-
Avec l'utilisateur
dwho
se rendre dans le Manager. PuisHôtes virtuels
,manager.example.com
,Règles d'accès
: -
Modifier la partie
Règles
à droite comme ci-dessus. PuisSauver
la configuration. -
Paramétrer la liaison à l'annuaire LDAP :
sudo /usr/share/lemonldap-ng/bin/lemonldap-ng-cli -yes 1 \ set \ authentication LDAP \ userDB LDAP \ passwordDB LDAP \ registerDB LDAP \ ldapServer 'ldap://localhost' \ managerDn 'cn=admin,dc=example,dc=com' \ managerPassword 'MonSuperPassword' \ ldapBase 'ou=people,dc=example,dc=com' \
- Pour des raisons de praticité, le
managerDn
utilisé est le compte admin de l'annuaire. Dans un contexte de production un autre compte sera utilisé.
- Pour des raisons de praticité, le
-
Afin d'avoir une vue synthétique de l'annuaire et obtenir les chemins complets pour la précédente commande, utiliser :
sudo slapcat | grep "dn:"
-
Exporter les attributs souhaités :
sudo /usr/share/lemonldap-ng/bin/lemonldap-ng-cli -force 1 -yes 1 \ addKey \ ldapExportedVars uid uid \ ldapExportedVars cn cn \ ldapExportedVars sn sn \ ldapExportedVars mail mail \ ldapExportedVars givenName givenName
-
Voici le retour attendu :
Status : [ { 'localhost' => 'OK' } ];
-
Redémarrer Apache2 :
sudo systemctl restart apache2
-
L'utilisateur
fd-admin
peut maintenant s'authentifier, avec accès au manager, sur la plateforme : http://auth.example.com.
1 commentaire pour l’instant