Teampass et Ldap : restreindre l’authentification

  1. TeamPass avec Active Directory l’annuaire LDAP
  2. Problèmatique :
  3. Les changements à apporter
  4. Rajoute un item pour activer/désactiver cette fonction
  5. Changement des Webservices
  6. Rajout du texte et traduction français
  7. Exemple en vidéo
  8. Remerciements

TeamPass avec Active Directory l’annuaire LDAP

Problèmatique :

Connecter les utilisateurs avec l’authentification par mot de passe stockés dans un annuaire Ldap Active Directory. Restreindre l’accès à un OU spécifique afin que tous les utilistateurs ne puissent pas se connecter à l’application.

La solution actuelle ldap de teampass fonctionne, mais ne correspond pas à notre besoin car tous les utilisateurs présents dans l’annuaire AD peuvent se connecter à Teampass ce qui peut être problèmatique.

Les fonctions php ldap employés dans l’application provient d’un develloppement d’une suite de script php ADLdap.

Après avoir bien compris l’utilisation de ces différentes class, il apparaît qu’il est impossible d’implémenter la solution de restriction par OU. Cela permet le parcours d’active directory, changer les mots de passe, rajouter un utilisateur, etc… Mais non de restreindre l’accès via OU ou Groupe. Seul un script adapté pourrai apporter une solution.

http://adldap.sourceforge.net/

Pour contourner l’impossibilité de restriction via OU, j’ai décidé de restreindre l’accès uniquement aux utilisateurs présents dans la base de Teampass. Si l’utilisateur ne fait pas parti de la base il est rejeté bien qu’active directory ai déjà donné son aval, l’appli elle rejète l’utilisateur.

Les changements à apporter

Les fichiers à changer :

teampassfolder/admin.settings.php

teampassfolder/sources/main.queries.php

teampassfolder/includes/language/french.php

Rajoute un item pour activer/désactiver cette fonction

teampassfolder/admin.settings.php

Rajouter ce code line 970 to 984 (voir le code sur github, nombreux changements :

Changement des Webservices

teampassfolder/sources/main.queries.php

Rajout du code à la ligne 224 juste après true pour changer le webservice afin qu’il prenne en compte l’activation ou non de la nouvelle fonction.

Comme ceci :

Plus simplement en commentant de 226 a 243 :

Ceci permet à teampass de ne pas systématiquement connecter un utilisateur ldap : si il n’est pas dans la base donc pas de connexion.

Rajout du texte et traduction français

Rajouter la ligne 446 pour la traducton en français :

teampassfolder/includes/language/french.php

Exemple en vidéo

Vous pouvez voir le code entier sur GitHub et télécharger la dernière version à ce jour 2.1.13.

https://github.com/patricklbs/TeamPass

Remerciements

Un grand merci à Hyade pour son active participation à cette solution.