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ôle | Périmètre |
|---|---|
| Owner | Contrôle total : gestion de l'entreprise, des membres, des clés API, de la facturation et de la connexion Odoo |
| Admin | Administration : gestion des clés API de tous les membres, accès à tous les logs, configuration Odoo |
| Member | Accès limité : gestion de ses propres clés API uniquement, consultation de ses propres logs |
Exemples concrets
| Action | Owner | Admin | Member |
|---|---|---|---|
| Créer une clé API pour soi | Oui | Oui | Oui |
| Révoquer la clé d'un autre membre | Oui | Oui | Non |
| Consulter tous les logs | Oui | Oui | Non |
| Modifier la connexion Odoo | Oui | Oui | Non |
| Inviter un nouveau membre | Oui | Oui | Non |
| Gérer la facturation | Oui | Non | Non |
| Transférer la propriété | Oui | Non | Non |
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
- Lors de l'enregistrement d'une connexion Odoo, les identifiants sensibles sont chiffrés côté serveur
- Le résultat est stocké au format
IV:TAG:CIPHERTEXT(hexadécimal) - Lors de chaque requête vers Odoo, les identifiants sont déchiffrés en mémoire pour la durée de l'appel
- 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
| Champ | Description |
|---|---|
| Outil MCP | Nom de l'outil appelé (query, read, create, etc.) |
| Paramètres | Données d'entrée de la requête |
| Résultat | Données de sortie (succès) ou message d'erreur |
| Statut | success, error ou timeout |
| Durée | Temps d'exécution en millisecondes |
| Utilisateur | Identité de l'utilisateur et clé API utilisée |
| Session | Identifiant 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