Pour continuer dans la catégorie SSO je passe aujourd'hui sur une solution développée en Perl qui m'a beaucoup séduite : LemonLDAP::NG. Contrairement à ce que pourrais laisser penser le nom du projet celui-ci ne se restreint pas uniquement à de l'authentification sur un annuaire LDAP mais est au contraire l'une des solutions SSO la plus complète qui existe à ce jour.

En effet LemonLDAP::NG peut authentifier l'utilisateur sur plus de 15 solutions différents, dont LDAP, une base de données, OpenID, un serveur CAS, une authentification Apache,Twitter... (voir la liste complète ici http://lemonldap-ng.org/documentation/latest/start#authentication_users_and_password_databases) et offre un panel de protocoles pour l'authentification utilisateur : CAS 1.0, CAS 2.0, SAML 1.1 et 2.0, OpenID...

Aujourd'hui je compléterais le tutoriel d'installation du site officiel que vous retrouverez ici LemondLDAP::NG : Installation on RedHat/CentOS.

Dépôts et packages

Comme expliqué dans le tutoriel, l'installation se fait ici par des packages (RPM pour CentOS qui je le rappel est le "penchant" libre de la distribution RedHat). Il faut, tout d'abord ajouter le dépôt EPEL afin de pouvoir installer les packages Perl.

su -c 'rpm -Uvh http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-7.noarch.rpm'

Cette ligne permet d'ajouter et de configurer automatiquement le dépôt sur CentOS6, pour les versions précédentes, référez vous à la FAQ officielle.

Vous allez pouvoir installer LemonLDAP::NG ainsi que toutes ses dépendances. Si vous souhaitez une version plus à jour je vous invite à télécharger l'ensemble des RPM directement sur la section téléchargement du site officiel : http://lemonldap-ng.org/download.

Configuration Apache et de /etc/hosts

LemonLDAP::NG, contrairement à CAS ou Shibboleth, est une solution autonome se connectant sous forme de module au serveur web Apache. De ce fait ses dépendances sont bien maigres : Apache, Perl et l'annuaire LDAP/Mysql...

L'installation des paquets à automatiquement rajouté les modules nécessaires dans la configuration d'Apache. Il suffit alors de lier les hôtes virtuels existant et de rediriger les requêtes.

Autorisez tout d'abord l'utilisation d'hôtes virtuels en ajoutant à la configuration Apache (fichier /etc/httpd/conf/httpd.conf) sur CentOS.

NameVirtualHost *:80

Puis relancez le serveur.

Ensuite éditez le fichier /etc/hosts et rajoutez

127.0.0.1 test1.mondomain.com test2.mondomaine.com reload.mondomaine.com manager.mondomaine.com auth.mondomaine.com

Ici mondomaine.com correspond au domaine que vous avez spécifié dans la configuration des différents modules Apache de LemonLDAP::NG (fichiers /etc/httpd/conf.d/z-lemonldap-ng-...). Modifiez ces fichiers si ils ne correspondent pas.

Grâce à cette modification, toutes les requêtes partant vers les sous domaines de type *.mondomaine sont redirigés sur le serveur Apache local.

Vous devriez ainsi être capable d'accéder au site auth.mondomaine.com.

Correction des droits sur le manager

Nous allons maintenant configurer LemonLDAP::NG pour le lier à un serveur LDAP existant. Mais avant toute chose je vous invite à rendre publique l'interface d'administration du SSO. En effet quand vous basculerez l'authentification sur le LDAP, si certains éléments sont faux vous ne pourrez pas modifier depuis l'interface ces mêmes identifiants.

Ouvrez en administrateur le fichier lemonldap-ng.ini

# nano /etc/lemonldap-ng/lemonldap-ng.ini

Puis recherchez la section manager et remplacez la valeur de protection par

[manager]
protection = 

Quand vous aurez correctement configuré le LDAP, n'oubliez pas de repasser en mode protection = manager pour éviter toute embrouille :)

SELinux...

Une particularité de CentOS est l'activation de SELinux sur l'ensemble du système, ce système va ici plus nous embêter qu'autre chose car il va empêcher de dialoguer avec le LDAP si il est distant. Je recommande donc fortement de le désactiver où du moins de l'adapter afin d'éviter ces petits désagrément.

# echo 0 > /selinux/enforce

Configuration du LDAP

Nous allons maintenant pouvoir configurer la connexion au LDAP. Rendez-vous sur l'interface d'administration puis dans Paramètres Généraux > Modules d'Authentification. Choisissez LDAP puis enregistrez. Vous devriez alors voir apparaitre un dossier contenant tout les éléments nécessaires à la configuration du LDAP.

Renseignez alors l'hôte, le champ de recherche des utilisateurs. Le compte de connexion administrateur (ici cn=sso_svc) ainsi que son mot de passe en toute lettres.

Vérifiez par la suite dans le dossier Filtres que le champ de recherche de l'identifiant de l'utilisateur est le bon. Par défaut le filtre vaux

 (&(uid=$user)(objectClass=inetOrgPerson))

Si vous requêtez un ActiveDirectory il va falloir mettre

(&(sAMAccountName=$user)(objectClass=person))

Puis tentez de vous réauthentifier auprès du SSO avec les comptes existant dans le LDAP.

C'est tout pour aujourd'hui !