Objectif
Intégrer Nextcloud avec un annuaire LDAP (OpenLDAP) ou Active Directory Windows pour centraliser l'authentification des utilisateurs.
Les utilisateurs pourront se connecter à Nextcloud avec leurs identifiants LDAP/AD existants, évitant ainsi la double gestion des comptes.
Prérequis
- Nextcloud installé et fonctionnel (voir procédure 04)
- Serveur LDAP (OpenLDAP) ou Active Directory opérationnel
- Compte de service LDAP avec droits de lecture sur l'annuaire
- Connectivité réseau entre Nextcloud et le serveur LDAP/AD
- Port LDAP accessible : 389 (LDAP) ou 636 (LDAPS)
Procédure Complète
Étape 1 : Installation des outils LDAP
Installer les utilitaires LDAP sur le serveur Nextcloud :
apt install ldap-utils -y
Vérifier l'installation :
ldapsearch --version
Étape 2 : Test de connectivité LDAP
Pour Active Directory (domaine grp3.local) :
ldapsearch -x -H ldap://grp3.local:389 \
-D "CN=nextcloud,OU=ServiceAccounts,DC=grp3,DC=local" \
-W \
-b "DC=grp3,DC=local"
-x: utiliser l'authentification simple (pas SASL)-H: URL du serveur LDAP (ldap:// ou ldaps://)-D: DN (Distinguished Name) du compte de service-W: demander le mot de passe (option capitale)-b: base DN de recherche
Saisir le mot de passe du compte de service lorsqu'il est demandé.
- "Can't contact LDAP server" : vérifier la connectivité réseau, le port ouvert (389/636)
- "Invalid credentials" : vérifier le DN et le mot de passe du compte de service
- "Operations error" : vérifier la base DN
Pour OpenLDAP :
ldapsearch -x -H ldap://192.168.1.10:389 \
-D "cn=admin,dc=example,dc=com" \
-W \
-b "dc=example,dc=com"
Étape 3 : Activation de l'application LDAP dans Nextcloud
Via la ligne de commande (méthode recommandée) :
sudo -u www-data php /var/www/nextcloud/occ app:enable user_ldap
Alternative : via l'interface web
- Se connecter en tant qu'administrateur Nextcloud
- Aller dans Applications (icône en forme de grille)
- Catégorie Intégration
- Trouver "LDAP user and group backend"
- Cliquer sur Activer
Étape 4 : Configuration LDAP dans Nextcloud (Interface Web)
Aller dans Paramètres → Administration → LDAP/AD integration
Onglet 1 : Serveur
Hôte : grp3.local (ou adresse IP : 192.168.1.10) Port : 389 (LDAP) ou 636 (LDAPS avec SSL) DN utilisateur : CN=nextcloud,OU=ServiceAccounts,DC=grp3,DC=local Mot de passe : [mot de passe du compte nextcloud] DN de base : DC=grp3,DC=local
Cliquer sur "Tester le DN de base" → Doit afficher "Configuration OK"
Onglet 2 : Utilisateurs
Filtre utilisateur LDAP :
(&(objectClass=user)(!(objectClass=computer)))
&: opérateur ET logique(objectClass=user): tous les objets de type utilisateur(!(objectClass=computer)): exclure les comptes ordinateurs
Variantes de filtres :
# Utilisateurs actifs uniquement (AD) (&(objectClass=user)(!(objectClass=computer))(!(userAccountControl:1.2.840.113556.1.4.803:=2))) # Utilisateurs d'une OU spécifique (&(objectClass=user)(!(objectClass=computer))(memberOf=CN=Utilisateurs_Nextcloud,OU=Groups,DC=grp3,DC=local)) # OpenLDAP (posixAccount) (objectClass=posixAccount)
Cliquer sur "Vérifier les paramètres et compter les utilisateurs" → Affiche le nombre d'utilisateurs trouvés
Onglet 3 : Attributs de connexion
Attribut de connexion LDAP : sAMAccountName (AD) ou uid (OpenLDAP)
- sAMAccountName : nom de compte Windows (ex: jdupont)
- userPrincipalName : adresse email complète (ex: [email protected])
- mail : adresse email
- uid : identifiant unique (OpenLDAP)
Onglet 4 : Groupes
Filtre groupe LDAP :
(objectClass=group)
Ou pour OpenLDAP :
(objectClass=posixGroup)
Onglet 5 : Avancé
Configuration du nom d'affichage :
Nom d'affichage : displayName (AD) ou cn (OpenLDAP) DN de base utilisateurs : OU=Utilisateurs,DC=grp3,DC=local DN de base groupes : OU=Groups,DC=grp3,DC=local
Mapping d'email :
Adresse email : mail
Onglet 6 : Expert
Champ interne du nom d'utilisateur : sAMAccountName (ou laisser vide pour auto) Remplacement du DN de l'utilisateur : Activé
Étape 5 : Synchronisation des utilisateurs
Forcer la synchronisation via la ligne de commande :
sudo -u www-data php /var/www/nextcloud/occ user:sync "OCA\User_LDAP\User_Proxy"
Lister les utilisateurs Nextcloud :
sudo -u www-data php /var/www/nextcloud/occ user:list
Étape 6 : Planification de la synchronisation automatique
Ajouter une tâche cron pour synchroniser régulièrement :
crontab -u www-data -e
Ajouter la ligne (synchronisation toutes les heures) :
0 * * * * php /var/www/nextcloud/occ user:sync "OCA\User_LDAP\User_Proxy"
Vérifications
Test de connexion utilisateur LDAP
- Se déconnecter du compte administrateur Nextcloud
- Utiliser un compte LDAP pour se connecter (ex: jdupont / mot_de_passe_AD)
- La première connexion crée automatiquement le profil Nextcloud
Vérification des utilisateurs synchronisés
sudo -u www-data php /var/www/nextcloud/occ user:list
Les utilisateurs LDAP apparaissent avec leur identifiant LDAP.
Vérification des groupes LDAP
sudo -u www-data php /var/www/nextcloud/occ group:list
Test de modification de mot de passe
Changer le mot de passe d'un utilisateur dans Active Directory, puis tester la connexion à Nextcloud → doit utiliser le nouveau mot de passe.
Logs LDAP Nextcloud
Activer les logs LDAP détaillés (dépannage uniquement) :
- Interface Nextcloud → Paramètres → LDAP/AD integration
- Onglet Expert
- Activer "Log LDAP requests"
- Consulter les logs : /var/www/nextcloud/data/nextcloud.log
Configuration avancée
Attribution automatique de quotas par groupe
Dans Nextcloud, aller dans Paramètres → Utilisateurs
- Sélectionner un groupe LDAP (ex: Utilisateurs_Nextcloud)
- Définir un quota par défaut (ex: 10 Go)
Restriction d'accès par groupe LDAP
Limiter l'accès Nextcloud à un groupe AD spécifique :
- Interface LDAP → Onglet Utilisateurs
- Modifier le filtre utilisateur :
(&(objectClass=user)(!(objectClass=computer))(memberOf=CN=Nextcloud_Users,OU=Groups,DC=grp3,DC=local))
Synchronisation uniquement à la première connexion
Éditer /var/www/nextcloud/config/config.php :
nano /var/www/nextcloud/config/config.php
Ajouter :
'ldap_user_cleanup_interval' => 0,
Utilisation de LDAPS (chiffré SSL/TLS)
Pour sécuriser les échanges LDAP :
- S'assurer que le serveur AD/LDAP écoute sur le port 636 (LDAPS)
- Configuration Nextcloud → Hôte : ldaps://grp3.local:636
- Importer le certificat SSL du serveur LDAP si nécessaire :
openssl s_client -connect grp3.local:636 -showcerts
Sécurité et Limites
Avantages de l'intégration LDAP
- Centralisation de l'authentification (SSO partiel)
- Gestion unifiée des utilisateurs (création/suppression)
- Cohérence des mots de passe entre systèmes
- Respect des politiques de sécurité AD (complexité mot de passe, expiration)
- Intégration des groupes AD pour gestion des droits Nextcloud
Limites de cette configuration (niveau BTS)
- LDAP non chiffré (port 389) : utiliser LDAPS (636) en production
- Compte de service avec mot de passe en clair dans la config
- Pas de Single Sign-On (SSO) complet (SAML, OAuth2)
- Synchronisation unidirectionnelle (LDAP → Nextcloud uniquement)
- Modification de mot de passe impossible depuis Nextcloud
Bonnes pratiques
- Créer un compte de service AD dédié avec droits minimaux (lecture seule)
- Utiliser LDAPS (port 636) pour chiffrer les échanges
- Restreindre l'accès Nextcloud via filtres LDAP (groupes spécifiques)
- Surveiller les logs LDAP pour détecter les anomalies
- Tester la synchronisation régulièrement
- Documenter la structure LDAP/AD (DN, OU, groupes)
Sécurisation du compte de service
Dans Active Directory :
- Créer une OU dédiée : OU=ServiceAccounts
- Créer l'utilisateur : CN=nextcloud
- Propriétés du compte :
- L'utilisateur ne peut pas changer le mot de passe
- Le mot de passe n'expire jamais
- Le compte ne peut pas être verrouillé
- Droits LDAP : lecture seule sur les OUs utilisateurs/groupes
Dépannage
Problème : Aucun utilisateur trouvé
- Vérifier le filtre LDAP dans l'onglet Utilisateurs
- Tester le filtre avec ldapsearch :
ldapsearch -x -H ldap://grp3.local:389 \ -D "CN=nextcloud,OU=ServiceAccounts,DC=grp3,DC=local" \ -W \ -b "DC=grp3,DC=local" \ "(&(objectClass=user)(!(objectClass=computer)))"
Problème : Connexion utilisateur échoue
- Vérifier l'attribut de connexion (sAMAccountName, mail, etc.)
- S'assurer que l'utilisateur existe dans LDAP
- Vérifier que le compte AD n'est pas désactivé ou expiré
- Consulter les logs : tail -f /var/www/nextcloud/data/nextcloud.log
Problème : Groupes LDAP non visibles
- Vérifier le filtre groupe : (objectClass=group)
- Vérifier le DN de base groupes
- Forcer la synchronisation :
sudo -u www-data php /var/www/nextcloud/occ ldap:show-config
Réinitialisation de la configuration LDAP
sudo -u www-data php /var/www/nextcloud/occ ldap:delete-config s01
Puis reconfigurer depuis l'interface web.
Points Clés pour l'Oral BTS
- LDAP : Lightweight Directory Access Protocol (annuaire centralisé)
- Active Directory : implémentation Microsoft de LDAP avec extensions
- DN (Distinguished Name) : chemin complet d'un objet LDAP
- Attributs LDAP : sAMAccountName, cn, mail, memberOf, objectClass
- Filtres LDAP : syntaxe pour cibler des objets spécifiques
- Compte de service : utilisateur dédié avec droits minimaux pour l'application
- SSO partiel : authentification centralisée mais pas de connexion unique automatique
- Avantage : gestion unifiée des utilisateurs (création/suppression depuis l'AD)