-
Quentin CHEVALIER authoredQuentin CHEVALIER authored
Sur le LDAP Frankiz
A l'origine Frankiz, le prédécesseur de sigma, avait sa propre base de données qu'il importait toutes les 3h dans un LDAP énorme et sale, qui contenaiit le strict minimum. Ce LDAP s'est révélé très utile à différents sites binets qui ont fait un usage très libre de cette ressource.
De sorte que quand il fallut remplacer Frankiz, la destruction du LDAP n'était pas possible sans revoir plusieurs sites binets (à voir, le CAS était peut-être une solution suffisante). On a donc choisi de tuer la BDD Frankiz, mais seulement après avoir considérablement enrichi le LDAP pour en faire la BDD utilisateurs et groupes principale de sigma.
Une documentation vieillissante est disponible sur le wikix
par rapport au LDAP de Frankiz.
Le BR2017 a mené un gros travail de réorganisation du LDAP donc beaucoup d'informations sur le wikix ne seront plus valides.
Idée de nouvelle organisation du LDAP
Le LDAP a été significativement enrichi depuis Frankiz, puisqu'il contient la majeure partie des données utilisateurs et groupes de sigma. Les champs parent et child permettent aux resolvers afférents de faire descendre les admins et remonter les membres, mais n'a pas d'influence à l'intérieur de l'API LDAP.
L'équivalence pratique entre champs du LDAP et champs du code est dans le fichier de configuration ldap_config
.
En pratique, Sigma n'utilise pas l'arbre utilisateurs pour déterminer les groupes d'un utilisateur. On préfère faire à chaque fois une requête sur l'arbre groupes. Cela permet de gérer plus finement des questions d'héritage.
Etat de l'API
Cette API est voulue comme la plus simple et la plus minimaliste possible ; en effet, elle sera à réimplémenter sur toutes les instances différentes de sigma pour s'adapter aux structures de données des différentes écoles. On peut administrer des groupes depuis sigma, mais pour s'interfacer d'instances à instances seules deux fonctions sont indispensables ; peek et search.
Cette API est naïve et ne gère pas de problème de récursion.
Le détail de chaque fonction est disponible dans la documentation JSDOC : (User
et Group
).
La lutet contre les injections est faite au plus bas niveau possible en utilisant ldapEscape
directement dans la classe Basics
. En effet, les injections LDAP sont relativement voyantes et ne peuvent pas se faire avec des caractères usuels.