Tut's Linux

Nextcloud, problème de connexion LDAP avec un Active Directory

Nextcloud permet de se connecter avec des comptes utilisateurs locaux ou depuis un annuaire LDAP. Ici, un annuaire Active Directory a été configuré pour exploiter les comptes utilisateurs du domaine comme compte de connexion Nextcloud.

Contexte

  • Application Nextcloud 19 (dernière révision au 10/02/2021), hébergé sur un serveur Debian 10 avec PHP7.4. Une connexion LDAP est initiée vers un serveur Active Directory.
  • L’utilisateur pour le processus web est www-data, l’emplacement du dossier où se trouve Nextcloud est /var/www/html.
  • Lors des commandes « occ », pensez à changer l’utilisateur et/ou « php » en fonction de votre configuration de serveur.
  • Le mode maintenance de Nextcloud n’a pas été activé.

Clairement pas une grosse configuration ni de particularités. Il s’agit d’un Nextcloud « simple » mais fonctionnel.

Compréhension du problème de connexion LDAP

Cependant, par miracle, la connexion LDAP n’était plus réalisable. Pas de réelle raison apparente, aucune modification n’a été apportée. Un rapide tour dans les logs me permet de relever ce genre de ligne (tronquée) :

[...]"app":"webdav","method":"PROPFIND","url":"/remote.php/webdav/","message":{"Exception":"Sabre\\DAV\\Exception\\ServiceUnavailable","Message":"OC\\ServerNotAvailableException: Connection to LDAP server could not be established","Code":0,[...]

In Connection.php line 208:
  Connection to LDAP server could not be established

Je décide d’explorer la configuration « s01 » (par défaut dans Nextcloud, la première connexion LDAP créée aura cet identifiant.) avec l’interpréteur PHP « occ », disponible quand Nextcloud est installé :

infra@nextcloud:/var/www/html/nextcloud# sudo -u www-data php occ ldap:test-config s01

The configuration is invalid. Please have a look at the logs for further details.

In Connection.php line 208:
   Connection to LDAP server could not be established

Pas très parlant… Allons regarder la configuration LDAP de Nextcloud par le biais de la commande sudo -u www-data php occ ldap:show-config s01. De nombreuses lignes seront affichées, correspondant aux différentes valeurs nécessaires pour établir la connexion sécurisée avec l’annuaire. Je remarque cette ligne : ldapLoginFilter. Il s’agit des filtres utilisés par les outils LDAP pour récupérer uniquement la valeur dans une colonne précise de l’annuaire, notamment le « login » pour authentifier les utilisateurs.

Sachez qu’un annuaire LDAP peut être aussi bien sous Linux que sous Microsoft, toutefois les champs utilisés ne seront pas les mêmes. Dans notre cas, avec l’Active Directory, le champ ldapLoginFilter doit avoir cette valeur :

(&(objectclass=*)(|(cn=%uid)(sAMAccountName=%uid)))

Ici, le champ contenait posix=%uid, qui correspond à un annuaire LDAP Linux ! Erreur de configuration donc.
Pour modifier cette variable, j’ai exécuté cette commande :

sudo -u www-data php /var/www/html/occ ldap:set-config "s01" ldap_login_filter "(&(objectclass=*)(|(cn=%uid)(sAMAccountName=%uid)))"

La configuration est rechargée et prise à chaud, pas besoin de redémarrer quelconque processus. Afin d’en avoir immédiatement le résultat, j’ai passé la commande ci-dessous pour tester la connexion LDAP :

sudo -u www-data php occ ldap:test-config s01

Quand c’est un succès, vous devez avoir la phrase The configuration is valid and the connection could be established!. Dirigez-vous maintenant sur la page web d’authentification de Nextcloud et essayez de vous connecter… 😉

Source

Inspiration

Bercé par l'informatique depuis mon plus jeune âge, je transforme ma passion en expertise.

Leave a reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

You may also like