Module AUTH SAML
Introduction au module
Ce module est disponible pour forcer l'authentification SSO et récupérer l'utilisateur connecté. Nécessite l'installation de SimpleSAMLphp (instructions ci-dessous)
<?php
require_once '/var/simplesamlphp/lib/_autoload.php';
ini_set('session.cookie_domain', '.votre-nom-de-domaine.com');
session_start();
if (!isset($_SESSION['utilisateurs'])) {
$auth = new \SimpleSAML\Auth\Simple('default-sp');
// Force la connexion SSO
$auth->requireAuth();
// Récupère les attributs utilisateur
$attributes = $auth->getAttributes();
//A adapter en fonction de vos attributs ADFS
if (isset($attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress'][0])) {
$_SESSION['utilisateurs'] = $attributes['http://schemas.xmlsoap.org/ws/2005/05/identity/claims/emailaddress'][0];
} else {
$_SESSION['utilisateurs'] = 'inconnu@local';
}
}
?>
Explication :
require_once→ charge SimpleSAMLphprequireAuth()→ force la connexion SSOgetAttributes()→ récupère les infos utilisateur$_SESSION→ stocke l'utilisateur connecté
Présentation de SimpleSAMLphp
SimpleSAMLphp est une application PHP open source permettant de mettre en place une authentification SSO (Single Sign-On) via le protocole SAML 2.0.
Elle permet aux utilisateurs de se connecter une seule fois et d'accéder à plusieurs applications sans ressaisir leurs identifiants.
Une seule authentification pour plusieurs services (SSO)
Fonctionnalités principales
- Support SAML 2.0 et 1.1
- Authentification SSO
- Compatibilité OAuth, OpenID, CAS
- Mode IdP (Identity Provider) ou SP (Service Provider)
- Connexion LDAP / Active Directory
- Transmission d'attributs (email, rôles...)
- Sécurité renforcée (chiffrement SAML)
- Architecture modulaire extensible
Avantages
- Solution open source robuste
- Compatible avec de nombreux systèmes
- Utilisé en entreprise et universités
- Facilement intégrable en PHP
Idéal pour centraliser l'authentification
Inconvénients
- Configuration complexe (SAML)
- Nécessite des connaissances en sécurité
- Dépendance à PHP
Mise en place technique avancée recommandée
Installation de SimpleSAMLphp
# Installation dépendances
apt install wget vim
apt install php-curl php-date php-dom php-xml php-json php-ldap php-cli php-mysql php-mbstring php-memcache
# Téléchargement
cd /root
mkdir -p Downloads
cd Downloads
wget https://github.com/simplesamlphp/simplesamlphp/releases/download/v2.5.0/simplesamlphp-2.5.0-full.tar.gz
# Extraction
tar -zxvf simplesamlphp-2.5.0-full.tar.gz
cp -R simplesamlphp-2.5.0 /var/simplesamlphp
# Permissions
chown www-data:www-data /var/simplesamlphp -R
Configuration
cd /var/simplesamlphp/config/
cp config.php.dist config.php
cp authsources.php.dist authsources.php
mkdir -p /var/cache/simplesamlphp/core/cache
chmod -R 777 /var/cache/simplesamlphp/
Génération des clés :
# Salt sécurisé
LC_ALL=C tr -c -d '0123456789abcdefghijklmnopqrstuvwxyz' < /dev/urandom | dd bs=32 count=1
# Mot de passe admin
cd /var/simplesamlphp
./bin/pwgen.php
Métadonnées SAML
cd /var/simplesamlphp/metadata
wget https://votre-serveur-adfs.com//FederationMetadata/2007-06/FederationMetadata.xml
Convertir ensuite les métadonnées via :
- https://votre-serveur.com//simplesaml/module.php/admin/federation/metadata-converter
- https://votre-serveur.com/simplesaml/module.php/saml/sp/metadata/default-sp
Cas d'utilisation
- SSO entreprise
- Connexion via Azure AD / ADFS
- Applications multi-services
- Universités et intranet
SimpleSAMLphp est une solution puissante pour centraliser l'authentification, mais nécessite une bonne maîtrise pour être correctement configurée.