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 SimpleSAMLphp
  • requireAuth() → force la connexion SSO
  • getAttributes() → 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.

Site officiel

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.