Ce petit service, conçu comme un exemple de fonctionnement d'Identity and Access Management (IAM) dédié aux agents IA, fournit une gestion d'identité, d'autorisation et de révocation pour les agents et les serveurs MCP.
La documentation est structurée par thématiques pour couvrir l'intégralité du fonctionnement technique et opérationnel :
- Mode Démo & Outil CLI Interactif : Guide complet de l'outil CLI interactif (
npm run demo), simulation de surconsommation avec prise de décision en direct, consultation Prometheus et démonstration multi-services. - Architecture Technique & Concepts : RS256 asymétrique, authentification
scryptasynchrone non-bloquante, liste noire hybride anti-OOM (Redis/Mémoire), Rate Limiting distribué et propagation W3Ctraceparent. - Spécification Référence de l'API REST : Documentation complète des endpoints (
POST /token,POST /verify,POST /revoke,GET /.well-known/jwks.json,GET /health,GET /metrics), schémas Zod et codes HTTP. - Guide Simplifié : Explications simples des concepts du projet.
- De la Théorie à la Pratique : Correspondance entre les concepts de sécurité pour agents IA (article de veille
Agent IAM) et leur implémentation concrète dansAgent IAM Minimal. - Rapport de Sécurité & Code Review : Analyse de sécurité OWASP Top 10, Zero Trust, sécurité des agents IA (LLM Top 10), résilience et checklist d'architecture.
npm installCréez un fichier .env à la racine (ou inspirez-vous de .env.example) :
PORT=3000
# Clés RSA pour la signature RS256 (générées automatiquement en dev si non fournies)
# IAM_RSA_PRIVATE_KEY="-----BEGIN PRIVATE KEY-----\n...\n-----END PRIVATE KEY-----"
# IAM_RSA_PUBLIC_KEY="-----BEGIN PUBLIC KEY-----\n...\n-----END PUBLIC KEY-----"
# Registre des clients autorisés
IAM_CLIENT_REGISTRY="clients.json"
# Persistance Redis pour la liste noire et le Rate Limiter (facultatif, fallback mémoire sinon)
# REDIS_URL="redis://localhost:6379"
# Configuration du Rate Limiting (15 min / 100 req par défaut)
IAM_RATE_LIMIT_WINDOW_MS=900000
IAM_RATE_LIMIT_MAX=100
# Alignement SPIFFE / WIMSE (facultatif)
IAM_SPIFFE_STRICT=false
IAM_TRUST_DOMAIN="agent.iam.local"
AGENT_IAM_LOG_FILE="iam_server.log"npm run build
npm startLe serveur démarre sur http://localhost:3000.
Le projet intègre un outil de démonstration interactif très simple à utiliser :
# Lancer le menu interactif CLI
npm run demo
# Ou lancer le scénario guidé automatisé de A à Z
node examples/demo.mjs fullnpm testExécute la suite complète des tests automatisés (couverture de code > 95%).