Bonjour, dans ce billet, nous allons voir comment créer une première configuration pour LemonLdap afin qu’il puisse faire office de serveur CAS (à partir de l’interface web).
Configuration du portail :
Rendez-vous dans « Paramètres généraux » -> « Portail » .
URL : http://portal.mondomaine.fr
La recherche des utilisateurs et de leurs attributs se fera dans un annuaire LDAP.
Configuration de l’authentification :
Rendez-vous dans « Paramètres généraux » -> « Modules d’authentification » .
Sélectionnez LDAP pour les 3 modules (Authentification, Utilisateur, Mot de passe).
Sauvez la configuration.
Retournez dans le menu précédant, un sous-menu apparait « Paramètres LDAP ». Celui-ci va vous permettre de configurer la connexion et les différents filtres de recherche.
Exemple de configuration :
Niveau d'authentification : 2
Connexion :
Hôte : ldap://ldap.mondomaine.fr
Port : 389
Base de recherche des utilisateurs : dc=mondomaine,dc=fr
Groupes :
Base de recherche : ou=posix_groups,dc=mondomaine,dc=fr
Classe d'objet : posixGroup
Attribut cible : memberUid
Attribut source utilisateur : uid
Attributs recherchés : cn
Récursif : désactivé
Le sous menu « Groupes » permet de configurer une « moulinette » qui va lister automatiquement les groupes existants et les utilisateurs qui en font parti (bien utile si vous n’avez pas d’attribut « memberOf » dans vos compte utilisateurs).
A ce stade, vous devriez pouvoir vous authentifier sur le portail (http://portal.mondomaine.fr)avec un utilisateur LDAP.
Configuration serveur CAS :
Rendez-vous dans « Paramètres généraux » -> « Modules fournisseur » -> « CAS » .
Exemple de configuration :
Activation : activer
Chemin : ^/cas/
Règle d'utilisation : $authenticationLevel > 1
Options :
Identifiant CAS : uid
Politique de contrôle d'accès : none
Création de certificats (auto signés) pour CAS :
Connectez-vous en ssh au serveur (si vous êtes à distance).
Création de la clé privée :
# openssl genrsa -des3 -out mondomaine.key 1024
# openssl req -new -key mondomaine.key -out mondomaine.csr
Création du certificat :
openssl x509 -req -days 365 -in mondomaine.csr -signkey mondomaine.key -out mondomaine.crt
Déplacement des fichiers :
# mv mondomaine.key /etc/ssl/private/
# mv mondomaine.crt /etc/ssl/certs/
# mv mondomaine.csr /etc/ssl/certs/
Modification de la configuration de LemonLdap pour inclure le certificat (https) :
Editez le fichier /etc/lemonldap-ng/portal-apache2.conf
Modifiez :
en
Ajoutez (dans le virtual host) :
SSLEngine On
SSLCertificateFile /etc/ssl/certs/mondomaine.crt
SSLCertificateKeyFile /etc/ssl/private/mondomaine.key
SSLCertificateChainFile /etc/ssl/certs/mondomaine.csr
Editez le fichier /etc/apache2/ports.conf et rajoutez la ligne suivante :
<IfModule mod_ssl.c>
Listen 443
</IfModule>
Activez le module apache ssl :
root@hv-4:~# a2enmod ssl
apache2ctl restart
Le portail répondra maintenant à httpS://portal.mondomaine.fr donc, modifiez la configuration du portail en conséquence.
Voilà, vous serveur doit être opérationnel.
Test :
Pour tester, voici un exemple de test d’authentification CAS en PHP (basé sur la librairie phpCAS disponible ici) que vous pouvez installer sur un de vos serveur web.
Arborescence :
|/index.php
|/CAS/config.php
|—–/Client.php
|…
Fichier index.php :
<?php
include_once('CAS.php');
require_once ('config.php');
phpCAS::setDebug();
phpCAS::client(CAS_VERSION_2_0,$cas_host,$cas_port,$cas_context);
phpCAS::setNoCasServerValidation();
phpCAS::forceAuthentication();
if (isset($_GET['logout']) && $_GET['logout'] == "Déconnexion")
phpCAS::logout();
?>
<h1>Authentification CAS réussie !</h1>
<p>L'utilisateur est <b><?php echo phpCAS::getUser(); ?></b>.</p>
<form action='#' method='GET' >
<input type='submit' name='logout' value='Déconnexion'>
</form>
Extrait du fichier config.php :
$phpcas_path = 'CAS/';
// Full Hostname of your CAS Server
$cas_host = 'portal.mondomaine.fr';
// Context of the CAS Server
$cas_context = '/cas';
$cas_port = 443;
$cas_real_hosts = array('portal.mondomaine.fr');
Les informations de débugage se trouve (par défaut) dans /tmp/phpCAS.log .
Cool pour le partage de l’info