Authentification LDAP avec XiVO
XiVO est un formidable outil de téléphonie. Cependant, il serait également intéressant que celui-ci puisse se servir du mécanisme d’authentification centralisé avec LDAP comme peuvent le faire certains logiciel propriétaire. Dans sa version de base, XiVO ne propose pas cette fonctionnalité. Celle-ci peut cependant être implémentée à l’aide de l’ajout du module d’authentification LDAP du serveur nginx. C’est justement ce point qui va être abordé dans cet article à travers différents points :
- Pré-requis
- Mise à jour de Nginx Wheezy avec le module LDAP activé
- Modification de la configuration de Nginx pour solliciter l’authentification LDAP
- Application des patchs sur l’interface web XiVO
1. Pré-requis
Tous les fichiers nécessaires à ce changement peuvent être téléchargés ici : Archive XiVO Authentification LDAP.
Dans cette archive, se trouve différents dossiers :
- deb-pkg : les binaires d’installation de nginx intégrant le module d’authentification LDAP ;
- patch : les fichiers servant à patcher l’interface web pour intégrer le mécanisme d’authentification LDAP transparent.
Nous considérerons que le contenu de l’archive a été extrait dans le dossier /root/acp-xivo-ldap/.
Nous considérerons également que le XiVO est en version 14.24 bien que le patch est compatible pour les versions 15.X et des indications complémentaires sont présentes pour ces versions.
Du fait que des droits d’administration peuvent être appliqué à des utilisateurs, les comptes des administrateurs doivent tout de même être créé dans XiVO. Cependant, bien entendu, leur mot de passe n’a pas à être celui de leur compte LDAP et donc pourrait tout à fait être généré de manière aléatoire.
2. Mise à jour de Nginx Wheezy avec le module LDAP activé
Tout d’abord, il faut déterminer la version de nginx actuellement installée. Pour cela, il suffit de taper la commande suivante :
dpkg -l | grep nginx
La version des paquets nginx entouré en rouge
Il faut ensuite installer le paquet libossp-uuid16 :
apt-get install libossp-uuid16
À partir de ce moment, il est possible d’installer les binaires présents dans le dossier /root/acp-xivo-ldap/deb-pkg/.
cd /root/acp-xivo-ldap/deb-pkg/ dpkg -i nginx*.deb
On vérifie ensuite la version des nouveaux paquets :
dpkg -l | grep nginx
La version des nouveaux paquets nginx entouré en rouge
On vérifie également que le module LDAP est bien chargé dans nginx :
nginx -V 2>&1 | tr " " "n" | grep ldap
Module LDAP chargé avec Nginx
C’en est fini pour la partie mise à jour de Nginx.
3. Modification de la configuration de Nginx pour solliciter l’authentification LDAP
Nginx a été mis à jour avec le module LDAP activé. Nous allons voir comment dire à Nginx d’utiliser ce nouveau mode d’authentification.
Il faut tout d’abord créer un nouveau fichier dans /etc/nginx/conf.d/
vi /etc/nginx/conf.d/ldapauth.conf
Et y insérer la configuration suivante :
auth_ldap_cache_enabled on; auth_ldap_cache_expiration_time 10000; auth_ldap_cache_size 1000; ldap_server ldapacp { url ldap://ldap/Ou=Utilisateurs,DC=acipia,DC=adsi?uid?sub?(objectClass=person); binddn "uid=ldap_read_xivo,ou=generiques,dc=acipia,dc=adsi"; binddn_passwd 'Passw0rd'; # group_attribute member; # group_attribute_is_dn on; # require group 'CN=admin_xivo,DC=groupes,DC=acipia,DC=adsi'; require valid_user; }
Les trois lignes en gras sont bien entendu à modifier en fonction de votre configuration.
- url : chemin d’accès complet à l’OU LDAP contenant les utilisateurs pouvant se connecter au XiVO suivi de l’attribut d’identifiant LDAP et des filtres ;
- binddn : DN complet de l’utilisateur pouvant se connecter au LDAP ;
- binddn_passwd : mot de passe de l’utilisateur renseigné précédemment.
- group_attribute : l’attribut LDAP utilisé pour les groupes ;
- groupe_attribute_is_dn : on si l’attribut est un DN ;
- require_group : DN complet du groupe dans lequel se trouve les utilisateurs autorisés ;
Il faut ensuite modifier la configuration Nginx de XiVO se trouvant dans le fichier /etc/nginx/sites-enabled/xivo et y ajouter la configuration en gras :
location / { .... } ## ACP location /ldap { satisfy all; auth_ldap "LDAP"; auth_ldap_servers ldapacp; try_files $uri / ; } ## ACP location /dlbackup/ { .... } ....
Note : en XiVO 15.X, ce fichier de configuration est situé dans /etc/nginx/locations/https/xivo-web-interface
Il suffit ensuite de demander à nginx de valider la configuration et de la recharger :
nginx -t && nginx -s reload
Validation de la configuration Nginx
La partie Nginx est complètement finie. Il ne reste plus qu’à patcher l’interface web de XiVO.
4. Application des patchs sur l’interface web XiVO
Tout le contenu du patch se trouve dans le dossier patch de l’archive fourni en début d’article.
Tout d’abord, il faut tester que le patch s’appliquera correctement :
patch - i /root/acp-xivo-ldap/patch/patch-xivo-Five-ldapauth.diff --dry-run -p0
Test d’application du patch avec aucune erreur retournée.
Si aucune erreur n’est retournée, le patch peut être appliqué :
patch - i /root/acp-xivo-ldap/patch/patch-xivo-Five-ldapauth.diff -p0
Le patch a bien été appliqué avec aucune erreur retournée.
Il ne reste qu’à tester en se connectant à l’URL https://IP_XIVO/ldap
L’utilisateur pourra alors utiliser ses identifiants LDAP pour se connecter à l’administration du XiVO.