SmartAuth

Nativement Dolibarr propose une API et chaque utilisateur peut disposer d'une seule clé d'API qui donne accès à tout le périmètre fonctionnel auquel l'utilisateur a accès.

Ce fonctionnement ne nous satisfait pas : par exemple si vous voulez développer une application mobile qui ne devrait avoir accès qu'à l'agenda de l'utilisateur et rien d'autre ça n'est pas vraiment possible en l'état actuel: si vous utilisez la clé d'API native de dolibarr liée à l'utilisateur l'application pourra également accéder aux factures et autres éléments auxquels l'utilisateur a accès.

C'est particulièrement problématique d'un point de vue du cloisonnement des accès.

La “solution” (contournement) classique est de créer un 2° utilisateur ayant moins de droits et de configurer la clé d'API de cet utilisateur sur l'application agenda … mais seulement voilà c'est un autre utilisateur et l'agenda de l'utilisateur 2 n'est pas celui de l'utilisateur 1 … ce qui oblige ensuite à faire des contorsions techniques.

Notre approche avec SmartAuth est de dire qu'un utilisateur peut avoir autant de clés d'API qu'il souhaite, chaque clé ayant des droits et si une clé est liée à une application elle ne devra pas être réutilisée par une autre (pour éviter le “vol” de clé).

C'est ce que vous pouvez observer lorsque vous utilisez des applications comme NextCloud : lorsque votre smartphone créé le 1er lien vers votre serveur NextCloud une clé d'API spécifique est générée. Ainsi si vous vous faites voler votre smartphone vous pourrez supprimer uniquement cette clé et en générer une nouvelle pour votre nouveau smartphone.

Vous aurez également accès aux journaux de connexion qui vous permettront de détecter des actions incorrectes et/ou de gérer les accès

Avec l'implémentation actuelle de dolibarr si votre clé est compromise par le vol de votre smartphone vous devrez reconfigurer TOUS les périphériques sur lesquels vous avez configuré votre clé pour en mettre une nouvelle !

Le dépôt de smartAuth est ici https://inligit.fr/cap-rel/dolibarr/plugin-smartauth/ et ne vous arrêtez pas à la doc qui n'est pas forcément à jour.