secu:tplemonldap

Utiliser LemonLdap-ng comme serveur CAS

Choisissez un nom de domaine (qui sera utilisé par lemonldap) : DOMAIN.fr

  • ajouter la route par défaut à votre machine (vers 10.0.0.1)
  • supprimer les proxy de votre navigateur (dans paramétres→avancé→réseaux
  • ajouter à votre fichier /etc/hosts
IP_DE_VOTRE_VM auth.DOMAIN.fr manager.DOMAIN.fr test1.DOMAIN.fr test2.DOMAIN.r reload.DOMAIN.fr

Remplacez IP_DE_VOTRE_VM par l'adresse ip de votre machine virtuelle et DOMAIN par votre nom de domain.

LemonLdap est une infrastructure d'authentification unique (SSO) qui propose plusieurs protocole :

  1. CAS/SAML
  2. OpenID
  3. OpenID connect

Vous allez l'installer dans un docker.

Ce TP se fait sur les VM de la plateforme openstack qui servirons de serveur d'authentification et sur des machines de la salle réseau qui servirons de client. <hi #ffc90e>Pour accélerer ce TP, j'ai dejà préparé une image avec un docker mysql, un docker phpmysadmin et le réseau docker. Le mot de passe de mysql est motdepasse. L'image contient de plus le dockerfile pour le serveur lemon ldap à adapter à votre nom de machine et à reconstruire. Vous ne devez donc uniquement lancer correctement le docker et passer à la partie II/</hi>

Commencer par créer un réseaux de docker : 172.18.0.0/24 vous placerez les dockers crées dans ce réseau. Je rappelle qu'ici, se trouve la procédure pour utiliser le serveur proxy de la salle.

Mettez en place trois dockers :

  • un docker mysql avec l'adresse 172.18.0.3;
  • un docker phpmyadmin avec l'adresse 172.18.0.4;
  • un docker lemonldap-ng avec l'adresse 172.18.0.2.

Dans la base mysql créez un utilisateur lemon et une base de données pour stocker les utilisateurs de lemonldap. Créez une table avec 5 champs : id, nom, login, password et mail.

Vous pouvez utiliser les dockers officiels pour mysql et phpmyadmin. Mais pour lemonldap, il faut vous baser sur ce dockerfile. Dans ce docker vous changerez le nom par défaut du service : *.groupe1.secu.univ-lyon1.fr par votrenom.secu.univ-lyon1.fr. De plus vous devez ajouter auth.votrenom.secu.univ-lyon1.fr, manager.votrenom.secu.univ-lyon1.fr, test1.votrenom.secu.univ-lyon1.fr et test2.votrenom.secu.univ-lyon1.fr au fichier /etc/hosts de toutes les machines qui auront besoin de se connecter à votre serveur.

Pour le lemonldap, reliez les ports 80 et 443 de la machine au port correspondant de ce docker. De plus partagez les répertoires /var/lib/lemonldap-ng/conf/, /etc/lemonldap-ng/, /etc/apache2/, /var/run/apache2/ et /var/log/apache2/ avec la machine hôte (utiliser par exemple les répertoire /docker/lemon/… 1). Les répertoires /var/lib/lemonldap-ng/conf/, /etc/lemonldap-ng/ et /etc/apache2/ doivent être remplis avant le démarrage du docker, installer un premier docker sans partage pour obtenir les fichiers et copiez les dans les répertoires partagés.

Vous devez pouvoir tester le service en vous connectant à auth.votrenom.secu.univ-lyon1.fr pour vous authentifier et à manager.votrenom… pour configurer le serveur. Les informations de connexion sont par défaut dwho/dwho

Depuis l'interface de configuration, vous pouvez changer l'authentification, la gestion des utilisateurs et des mots de passe dans le menu Paramètres généraux→Paramètres d'authentification et choisir l'authentification Database (BDI). Pour que cela fonctionne, il faut configurer l'accès à la base de donnée en remplissant les Parametres DBI. Attention, la chaine demandée pour la base est celle utiliser dans la connection du programme perl avec la base de donnée. Elle est de la forme : DBI:mysql:database=nomdelabase;host=adressedelabase;port=3306. Pour plus d'information, vous pouvez consulter les page man de perl par exemple man DBD::mysql.

Vous pouvez debugger le lien en consultant les logs du docker dans le répertoire partagé /docker/lemon/var/log/apache2/error.log

Une fois la connexion faite, il faut reconfigurer l'interface de configuration pour que votre utilisateur principale ait le droit de l'utiliser. Pour cela, il faut modifier la configuration des hôtes virtuels.

Vous devez de plus configurer les variables à exporter via Variables→Attributs à exporter

Si vous perdez l'accès à l'interface de configuration, il est possible de la rétablir temporairement en supprimant le contrôle. Pour cela il faut changer le fichier /etc/lemonldap-ng/lemonldap-ng.ini, dans la section [manager] il faut remplacer protection = manager par protection = none et relancer le docker.

Pour que cela fonctionne convenablement, il faut configurer un accès chiffré. Pour cela il faut définir un certificat pour le serveur web. C'est relativement simple en utilisant openssl. Vous trouverez ici un fichier de configuration qui permet d'utiliser des nom alternatifs. Vous pouvez voir ici une description des commandes openssl

  • une clef secrète pour le serveur
  • une requète de certificat (attention de bien choisir les nom alternatif correspondant à votre groupe).
  • Signer la requète avec le certificat présent sur la machine 192.168.76.181 dans le répertoire ~ubuntu/PKI.

Le mot de passe de ubuntu sur cette machine est totoplop, c'est aussi celui du certificat.

Ce certificat à été ajouté à la base des certificats racine des navigateur des machines de la salle. Vous pouvez donc tester son fonctionnement en configurant votre serveur lemonldap pour l'utiliser.

Depuis une autre machine, vous pouvez utiliser le client php-cas disponible ici

  • Utilisez le via un docker par exemple via ce dockerfile
  • Ajoutez le fichier du certificat raciné crée
  • Configurez le client d'abord sans vérifier le certificat du serveur CAS puis en le vérifiant.

1)
Pour une raison inconnue, lemonldap refuse assez souvent de démarrer à cause de la présence du fichier /var/run/apache2/apache2.pid qu'il faut alors éffacer
  • secu/tplemonldap.txt
  • Dernière modification : 2017/07/18 12:20
  • de fabien.rico