Introduction
o2Cloud User Manager est une application web professionnelle de création et gestion d'utilisateurs Active Directory. Elle offre une interface moderne et intuitive permettant aux administrateurs de créer des comptes utilisateurs AD de manière sécurisée et efficace.
Objectifs
- Permettre la création rapide d'utilisateurs Active Directory via une interface web
- Garantir la sécurité des communications via LDAPS (SSL/TLS)
- Offrir un contrôle d'accès granulaire basé sur les groupes AD
- Automatiser l'attribution de groupes par défaut
- Fournir une interface moderne, responsive et accessible
- Assurer une traçabilité complète via des logs détaillés
Prérequis
Serveur Web
| Composant | Version minimale | Recommandation |
|---|---|---|
| PHP | 8.0 | 8.1 ou supérieur |
| Extension PHP LDAP | Requis | php-ldap |
| Extension PHP OpenSSL | Requis | php-openssl |
| Composer | 2.0 | Dernière version |
| Serveur web | - | Apache 2.4 ou Nginx 1.18 |
Infrastructure Active Directory
- Serveur Active Directory accessible (Windows Server 2012 ou supérieur)
- Compte de service AD avec permissions de création d'utilisateurs
- Certificat SSL pour LDAPS (peut être auto-signé pour les tests)
- Port 636 (LDAPS) ou 389 (LDAP+STARTTLS) accessible
Système d'exploitation
- Windows Server 2012+ avec IIS ou Apache
- Linux (Ubuntu 20.04+, Debian 11+, CentOS 8+, RHEL 8+)
Fonctionnalités
Interface utilisateur
- Design moderne : Interface responsive construite avec TailwindCSS
- Mode sombre/clair : Détection automatique des préférences système
- Multi-plateforme : Compatible mobile, tablette et desktop
- Animations fluides : Transitions et micro-interactions soignées
Sécurité
- LDAPS (SSL/TLS) : Chiffrement des communications avec AD
- STARTTLS : Support du chiffrement opportuniste sur port 389
- Protection CSRF : Tokens anti-Cross-Site Request Forgery
- Anti-brute force : Limitation des tentatives de connexion
- Session timeout : Expiration automatique des sessions
- Validation des entrées : Sanitization contre les injections LDAP
Gestion des utilisateurs
- Création complète : Tous les attributs AD (nom, email, téléphone, département, etc.)
- Génération automatique : Noms d'utilisateur et mots de passe sécurisés
- Validation en temps réel : Vérification d'unicité des noms d'utilisateur et emails
- Recherche de manager : Recherche dynamique dans l'annuaire AD
- Attribution de groupes : Groupes par défaut et optionnels
- Informations professionnelles : Département, titre, société, bureau
Gestion des mots de passe
- Politique personnalisée : Longueur minimale, complexité configurable
- Génération sécurisée : Mots de passe aléatoires forts
- Changement obligatoire : Force le changement à la première connexion
- Conformité AD : Respect des politiques Active Directory
Logs & Audit
access.log: Connexions et authentificationsuser_creation.log: Créations d'utilisateurs avec détailserrors.log: Erreurs applicatives et LDAP
Installation
1Cloner le repository
Téléchargez les fichiers sources de o2Cloud User Manager :
git clone https://github.com/o2Cloud-fr/o2Cloud-User-Manager.git
cd o2Cloud-User-Manager
2Installer les dépendances
o2Cloud User Manager utilise Composer pour gérer ses dépendances PHP :
composer install
Vérification des extensions PHP
Vérifiez que les extensions requises sont installées :
php -m | grep ldap
php -m | grep openssl
Installation des extensions manquantes
Ubuntu/Debian :sudo apt-get update
sudo apt-get install php-ldap php-openssl php-mbstring
sudo systemctl restart apache2
CentOS/RHEL :
sudo yum install php-ldap php-openssl php-mbstring
sudo systemctl restart httpd
Windows/XAMPP :
Éditez C:\xampp\php\php.ini et décommentez :
extension=ldap
extension=openssl
extension=mbstring
Redémarrez Apache depuis le panneau de contrôle XAMPP.
3Configuration des certificats SSL (LDAPS)
Windows (XAMPP)
Étape 1 : Exporter le certificat CA depuis Active Directory
Sur le contrôleur de domaine Windows, ouvrez PowerShell en administrateur :
# Créer le dossier temporaire
New-Item -Path "C:\temp" -ItemType Directory -Force
# Exporter le certificat CA
$caName = "Votre-CA-Name" # Ex: contoso-DC-CA
$cert = Get-ChildItem -Path "Cert:\LocalMachine\Root" | Where-Object {$_.Subject -match $caName}
if ($cert) {
$base64 = [System.Convert]::ToBase64String($cert.RawData)
$pem = "-----BEGIN CERTIFICATE-----`r`n"
for ($i = 0; $i -lt $base64.Length; $i += 64) {
$len = [Math]::Min(64, $base64.Length - $i)
$pem += $base64.Substring($i, $len) + "`r`n"
}
$pem += "-----END CERTIFICATE-----`r`n"
[System.IO.File]::WriteAllText("C:\temp\ca-cert.pem", $pem)
Write-Host " Certificat exporté" -ForegroundColor Green
}
Étape 2 : Installer le certificat dans XAMPP/PHP
REM Créer le dossier de configuration OpenLDAP
mkdir C:\openldap\sysconf
REM Copier le certificat
copy C:\temp\ca-cert.pem C:\openldap\sysconf\cacert.pem
REM Créer le fichier de configuration
notepad C:\openldap\sysconf\ldap.conf
Contenu du fichier C:\openldap\sysconf\ldap.conf :
# Configuration OpenLDAP pour XAMPP
TLS_CACERT C:/openldap/sysconf/cacert.pem
TLS_REQCERT demand
TLS_PROTOCOL_MIN 3.1
Linux (Ubuntu/Debian)
# Copier le certificat CA
sudo mkdir -p /etc/ldap
sudo cp ca-cert.pem /etc/ldap/cacert.pem
# Créer le fichier de configuration
sudo nano /etc/ldap/ldap.conf
Contenu de /etc/ldap/ldap.conf :
TLS_CACERT /etc/ldap/cacert.pem
TLS_REQCERT demand
4Installation via l'interface web
Une fois le serveur web configuré, accédez à l'assistant d'installation :
https://users.exemple.com/install.php
Configuration Active Directory
- Serveur AD : FQDN ou adresse IP (ex: dc.contoso.com)
- Port LDAP : 636 pour LDAPS (recommandé)
- Utiliser SSL/TLS : Cochez pour LDAPS
- Base DN : DC=contoso,DC=com
- OU des utilisateurs : OU=Users,DC=contoso,DC=com
- DN du compte de service : CN=Service Account,OU=Service Accounts,DC=contoso,DC=com
Configuration de la sécurité
- Groupe d'administration : Activez pour restreindre l'accès
- Timeout de session : 900 secondes (15 minutes)
- Tentatives max : 5
Configuration utilisateur
- Format nom d'utilisateur : prenom.nom, pnom, ou prenomn
- Domaine email : contoso.com
- Groupes par défaut : Attribués automatiquement
- Groupes disponibles : Sélectionnables lors de la création
Compte de service Active Directory
Création du compte
Le compte de service est utilisé par l'application pour se connecter à AD et créer des utilisateurs.
Étapes de création
- Ouvrez Active Directory Users and Computers
- Naviguez vers l'OU
Service Accounts - Créez un nouveau compte utilisateur
- Configurez :
- Le mot de passe n'expire jamais
- L'utilisateur ne peut pas changer de mot de passe
Permissions requises
| Permission | Portée | Usage |
|---|---|---|
| Read | Base DN | Rechercher et authentifier |
| Create User Objects | OU utilisateurs | Créer de nouveaux comptes |
| Write All Properties | Objets utilisateurs | Définir les attributs |
| Write Members | Groupes | Attribuer les groupes |
Délégation de contrôle
Assistant de délégation
- Ouvrez Active Directory Users and Computers
- Clic droit sur l'OU des utilisateurs → Déléguer le contrôle
- Ajoutez le compte de service
- Sélectionnez "Create, delete, and manage user accounts"
- Terminez l'assistant
Permissions avancées pour les groupes
Pour chaque groupe que vous voulez attribuer :
- Clic droit sur le groupe → Propriétés → Sécurité
- Ajoutez le compte de service
- Cochez Write Members
Créer un utilisateur
Processus de création
- Connexion : Authentifiez-vous avec un compte membre du groupe admin
- Informations de base :
- Prénom et nom (obligatoires)
- Nom d'utilisateur (auto-généré ou personnalisé)
- Email (validé automatiquement)
- Informations de contact :
- Téléphone fixe et mobile (optionnels)
- Informations professionnelles :
- Département, titre, société, bureau
- Manager (recherche dynamique)
- Numéro d'employé (si requis)
- Description/notes
- Attribution de groupes :
- Groupes par défaut (automatiques)
- Groupes optionnels (sélection multiple)
Après la création
L'application affiche :
- Nom d'utilisateur créé
- Email configuré
- Mot de passe temporaire (à copier et transmettre)
- Information sur le changement obligatoire
Attribution de groupes
Groupes par défaut
Ces groupes sont attribués automatiquement à tous les nouveaux utilisateurs :
- Définis dans la configuration
- Attribution automatique lors de la création
- Pas de sélection manuelle nécessaire
Groupes optionnels
Ces groupes peuvent être sélectionnés lors de la création :
- Liste configurable
- Sélection multiple possible
- Affichage avec description
LDAPS - Sécurité
Pourquoi LDAPS est obligatoire ?
Active Directory refuse de définir des mots de passe sur une connexion non chiffrée. Pour créer des utilisateurs avec mot de passe, vous devez utiliser :
- LDAPS : Port 636 avec SSL/TLS direct
- STARTTLS : Port 389 avec upgrade SSL/TLS
Test de connexion LDAPS
# Test avec OpenSSL
openssl s_client -connect dc.contoso.com:636 -showcerts
# Test avec ldapsearch
ldapsearch -H ldaps://dc.contoso.com:636 \
-D "CN=Service Account,OU=Service Accounts,DC=contoso,DC=com" \
-W -b "DC=contoso,DC=com" "(objectClass=user)" cn
Logs & Audit
Types de logs
1. access.log
Enregistre toutes les connexions :
[2026-01-03 14:23:45] [192.168.1.100] Authentification réussie pour: admin@contoso.com
[2026-01-03 14:25:12] [192.168.1.101] Échec d'authentification pour: user@contoso.com
2. user_creation.log
Enregistre toutes les créations d'utilisateurs :
[2026-01-03 14:30:15] [192.168.1.100] Tentative de création pour: CN=Jean Dupont,OU=Users,DC=contoso,DC=com
[2026-01-03 14:30:16] [192.168.1.100] Utilisateur créé avec succès: jdupont
[2026-01-03 14:30:17] [192.168.1.100] Utilisateur ajouté au groupe: CN=All_Users,OU=Security,DC=contoso,DC=com
3. errors.log
Enregistre toutes les erreurs :
[2026-01-03 14:35:22] Impossible de se connecter au serveur LDAP: dc.contoso.com
[2026-01-03 14:36:45] Échec de création - Erreur LDAP #53: Server is unwilling to perform
Surveillance recommandée
- Consultez régulièrement
user_creation.logpour l'audit - Surveillez
access.logpour détecter les tentatives suspectes - Vérifiez
errors.logpour les problèmes de configuration
Dépannage
Erreur #53 : Server unwilling to perform
Cause
Active Directory refuse de définir le mot de passe car la connexion n'est pas chiffrée.
Solutions
- Vérifiez que LDAPS est activé dans la configuration :
'ad' => [ 'port' => 636, 'use_ssl' => true, // Doit être true ] - Vérifiez que le certificat CA est configuré (voir section Installation)
- Testez la connexion LDAPS avec openssl
Erreur #50 : Insufficient access rights
Cause
Le compte de service n'a pas les permissions nécessaires.
Solutions
- Vérifiez les permissions sur l'OU des utilisateurs
- Vérifiez la délégation de contrôle
- Vérifiez les permissions "Write Members" sur les groupes
Nom d'utilisateur déjà existant
Comportement automatique
L'application ajoute automatiquement un suffixe numérique :
- jean.dupont → jean.dupont1
- jean.dupont1 → jean.dupont2
Vous pouvez aussi personnaliser manuellement le nom d'utilisateur.
Page de diagnostic
Accédez à la page de diagnostic pour vérifier votre configuration :
https://users.exemple.com/diagnostic.php
Informations fournies
- Extensions PHP (ldap, openssl, mbstring)
- Connexion au serveur LDAP/LDAPS
- Authentification du compte de service
- Accessibilité de l'OU utilisateurs
- Existence du groupe d'administration
- Configuration actuelle (sans mots de passe)
- Logs récents (erreurs et créations)
Checklist de déploiement
Pré-installation
- PHP 8.0+ avec extensions ldap, openssl, mbstring
- Composer installé
- Serveur web configuré (Apache/Nginx/IIS)
- Certificat SSL pour le serveur web
- Accès au contrôleur de domaine (port 636)
Active Directory
- Compte de service créé
- Permissions déléguées (Create User Objects, Write All Properties)
- Permissions Write Members sur les groupes
- Groupe d'administration créé et configuré
- Certificat CA exporté au format PEM
Installation
- Fichiers déployés et dépendances installées
- Certificat CA configuré (ldap.conf)
- VirtualHost configuré
- Permissions des fichiers correctes
- Assistant d'installation complété
Sécurité
- HTTPS activé avec certificat valide
- LDAPS (port 636) configuré et testé
- config.php protégé (chmod 600)
- Groupe d'administration configuré
- Page diagnostic protégée ou supprimée
Tests
- Page de diagnostic OK
- Connexion administrateur fonctionnelle
- Création d'utilisateur test OK
- Attribution de groupes fonctionnelle
- Logs écrits correctement
- Interface responsive testée
Support & Contact
Informations
- Site web : o2cloud.fr
- GitHub : github.com/o2Cloud-fr/o2Cloud-User-Manager
- Version actuelle : 1.0.0
- Date : Janvier 2026
o2Cloud User Manager - Gestion d'utilisateurs Active Directory
© 2026 o2Cloud - Tous droits réservés - Made with in France