Configuration

Sécurité & permissions

Architecture de sécurité d'Aidoo : authentification OAuth & clé API, contrôle d'accès par rôle, chiffrement des identifiants et journalisation.

Architecture de sécurité

Aidoo applique une approche de sécurité en profondeur. Chaque requête MCP transite par le backend Express qui assure l'authentification, le contrôle d'accès, le chiffrement et la journalisation avant d'atteindre Odoo.

Assistant IA → Serveur MCP → Backend Aidoo → Odoo XML-RPC
                              ├─ Auth (JWT / API Key)
                              ├─ Contrôle de permissions
                              ├─ Journalisation
                              └─ Chiffrement des identifiants

Authentification

Aidoo propose trois méthodes d'authentification selon le contexte d'utilisation.

OAuth 2.1 (Claude.ai, ChatGPT, Claude Desktop, Claude Code — recommandé)

Pour les clients qui supportent l'OAuth (Claude.ai, ChatGPT, Claude Desktop, Claude Code), l'authentification est gérée par un flux OAuth 2.1 standard :

  • Aucune clé API à manipuler côté utilisateur, donc aucun secret à fuiter
  • Le token d'accès est de courte durée et renouvelé automatiquement
  • L'autorisation est scopée à une entreprise : l'utilisateur sélectionne explicitement quelle organisation Aidoo il autorise
  • La révocation est immédiate depuis le tableau de bord Aidoo

C'est la méthode par défaut recommandée pour la majorité des utilisateurs. Voir le guide Se connecter avec Claude.

Clés API (IDEs sans OAuth)

Pour les IDEs qui ne supportent pas OAuth (Cursor, Windsurf, etc.), les clés API authentifient les requêtes programmatiques. Chaque clé :

  • Est hachée en SHA-256 avant stockage (la clé en clair n'est jamais conservée)
  • Porte un préfixe aid_live_ pour identification rapide
  • Est liée à un utilisateur et une entreprise
  • Peut être révoquée instantanément depuis le tableau de bord

Consultez les guides Clés API et Clients locaux pour la gestion complète.

JWT (sessions du tableau de bord)

Les sessions du tableau de bord web utilisent des tokens JWT :

  • Access token : durée de vie de 15 minutes, transmis via l'en-tête Authorization
  • Refresh token : durée de vie de 30 jours, transmis via cookie httpOnly sécurisé
  • Le renouvellement est automatique et transparent pour l'utilisateur

Rôles et contrôle d'accès

Aidoo utilise un système de rôles à trois niveaux, appliqué par entreprise. Un même utilisateur peut avoir des rôles différents selon l'entreprise.

RôlePérimètre
OwnerContrôle total : gestion de l'entreprise, des membres, des clés API, de la facturation et de la connexion Odoo
AdminAdministration : gestion des clés API de tous les membres, accès à tous les logs, configuration Odoo
MemberAccès limité : gestion de ses propres clés API uniquement, consultation de ses propres logs

Exemples concrets

ActionOwnerAdminMember
Créer une clé API pour soiOuiOuiOui
Révoquer la clé d'un autre membreOuiOuiNon
Consulter tous les logsOuiOuiNon
Modifier la connexion OdooOuiOuiNon
Inviter un nouveau membreOuiOuiNon
Gérer la facturationOuiNonNon
Transférer la propriétéOuiNonNon

Isolation multi-tenant

Chaque requête est scopée à une entreprise. Un utilisateur ne peut accéder qu'aux ressources des entreprises dont il est membre. Le middleware vérifie systématiquement l'appartenance avant toute opération.

Chiffrement des identifiants Odoo

Les identifiants de connexion Odoo (URL, base de données, mot de passe) sont chiffrés au repos dans la base de données.

Algorithme

  • AES-256-GCM (Galois/Counter Mode) : chiffrement authentifié qui garantit à la fois la confidentialité et l'intégrité des données
  • Vecteur d'initialisation (IV) : 16 octets aléatoires générés pour chaque opération de chiffrement
  • Tag d'authentification : 16 octets pour détecter toute altération des données chiffrées

Fonctionnement

  1. Lors de l'enregistrement d'une connexion Odoo, les identifiants sensibles sont chiffrés côté serveur
  2. Le résultat est stocké au format IV:TAG:CIPHERTEXT (hexadécimal)
  3. Lors de chaque requête vers Odoo, les identifiants sont déchiffrés en mémoire pour la durée de l'appel
  4. La clé de chiffrement est une variable d'environnement serveur, jamais exposée côté client

Les identifiants Odoo ne transitent jamais en clair entre le navigateur et le serveur MCP. Seul le backend dispose de la clé de déchiffrement.

Journalisation des requêtes

Chaque appel MCP est enregistré avec un niveau de détail permettant l'audit complet.

Données enregistrées

ChampDescription
Outil MCPNom de l'outil appelé (query, read, create, etc.)
ParamètresDonnées d'entrée de la requête
RésultatDonnées de sortie (succès) ou message d'erreur
Statutsuccess, error ou timeout
DuréeTemps d'exécution en millisecondes
UtilisateurIdentité de l'utilisateur et clé API utilisée
SessionIdentifiant de session pour regrouper les appels liés

Rétention des données

Les logs sont automatiquement supprimés après 90 jours via un index TTL MongoDB. Cette durée permet un historique suffisant pour l'audit tout en respectant les principes de minimisation des données.

Filtrage et consultation

Depuis la page Logs du tableau de bord, vous pouvez filtrer par :

  • Outil MCP utilisé
  • Statut de la requête (succès, erreur, timeout)
  • Utilisateur
  • Plage de dates

Les owners et admins consultent tous les logs de l'entreprise. Les members ne voient que leurs propres requêtes.

Recommandations

  • Clé de chiffrement : utilisez une clé de 32 caractères aléatoires pour ENCRYPTION_KEY
  • Rotation des tokens : les access tokens JWT expirent automatiquement toutes les 15 minutes
  • Permissions minimales : attribuez uniquement les permissions nécessaires à chaque clé API
  • Surveillance : consultez régulièrement les logs pour détecter toute activité inhabituelle
  • Révocation rapide : en cas de compromission suspectée, révoquez immédiatement la clé concernée