Projet d'études M1

Mamba CLI - Interface d'Authentification

Interface en ligne de commande développée en Go pour l'intégration de solutions d'authentification modernes avec PocketBase. Gestion complète des utilisateurs, permissions et tokens JWT avec une architecture robuste et sécurisée.

Golang Cobra PocketBase JWT Docker

Vue d'ensemble

Contexte

Ce projet a été réalisé dans le cadre du devoir maison Golang M1-DO-B. L'objectif était de concevoir et implémenter une Interface en Ligne de Commande (CLI) en Go interagissant avec une solution d'authentification moderne pour gérer les utilisateurs, permissions et authentification de manière sécurisée.

Face au besoin croissant d'outils DevOps permettant la gestion centralisée des identités et des accès, ce projet répond à la problématique de l'automatisation des processus d'authentification dans les environnements cloud-native.

Objectifs

  • Création d'utilisateurs et d'administrateurs avec gestion des rôles
  • Système d'authentification sécurisé avec tokens JWT
  • Gestion granulaire des permissions (CRUD, consultation, recherche)
  • Interface CLI intuitive avec framework Cobra
  • Architecture scalable avec containerisation Docker
  • Intégration API REST avec PocketBase comme backend

Défis Techniques

  • Gestion sécurisée des tokens : Implémentation d'un système de stockage et rotation des JWT
  • Architecture de permissions : Conception d'un modèle de rôles flexible (super_user, user)
  • Validation et sécurité : Gestion des erreurs et validation des entrées utilisateur
  • Interface utilisateur CLI : Création d'une expérience utilisateur fluide avec Cobra
  • Containerisation complète : Déploiement multi-services avec Docker Compose

Architecture

Architecture Générale

L'architecture de Mamba CLI repose sur une séparation claire entre le client CLI et le backend d'authentification. Le CLI développé en Go utilise le framework Cobra pour une interface utilisateur optimale, tandis que PocketBase fournit les services d'authentification et de gestion des données.

Architecture CLI → API → Database

Le système implémente une architecture en couches :

  • Couche Présentation : Interface CLI avec commandes Cobra
  • Couche Business : Logique métier de gestion des utilisateurs et permissions
  • Couche API : Communication REST avec PocketBase
  • Couche Données : Base de données SQLite via PocketBase

Infrastructure

Containerisation multi-services :

  • mamba-cli : Conteneur principal avec l'exécutable Go
  • pocketbase : Service d'authentification et base de données
  • Volumes persistants : Stockage des données utilisateur
  • Réseau interne : Communication sécurisée entre services

Modèle de données :

  • Table users : Informations utilisateur avec relation vers rôles
  • Table roles : Définition des rôles (super_user, user)
  • Table permissions : Permissions granulaires (CRUD + consultation)

Sécurité

  • Authentification JWT : Tokens sécurisés avec expiration
  • Chiffrement des mots de passe : Hachage sécurisé via PocketBase
  • Validation des entrées : Contrôles stricts côté CLI et API
  • Gestion des permissions : Contrôle d'accès basé sur les rôles (RBAC)
  • Reset sécurisé : Processus de réinitialisation par email avec tokens temporaires
  • Isolation réseau : Communication interne via Docker networks

Technologies

Stack Technique

Backend & CLI

Golang : Langage principal pour performance et simplicité

Cobra : Framework CLI pour interface utilisateur optimale

PocketBase : Backend-as-a-Service pour authentification

SQLite : Base de données embarquée via PocketBase

Infrastructure

Docker : Containerisation et orchestration

Docker Compose : Orchestration multi-services

Alpine Linux : Images légères pour optimisation

Sécurité & API

JWT : Tokens d'authentification sécurisés

REST API : Communication standardisée

RBAC : Contrôle d'accès basé sur les rôles

Justifications Techniques

Golang + Cobra : Choix optimal pour une CLI performante avec une syntaxe intuitive et une génération automatique de documentation.

PocketBase : Solution élégante combinant rapidité de développement, sécurité avancée (cryptage, JWT) et personnalisabilité des permissions. Alternative moderne aux solutions d'authentification complexes.

Architecture en couches : Séparation claire des responsabilités permettant maintenabilité, testabilité et évolution future du système.

Docker multi-stage : Optimisation des images avec build séparé du runtime, réduisant la surface d'attaque et la taille des conteneurs.

Résultats & Impact

Fonctionnalités Implémentées

25+
Commandes CLI
5
Permissions granulaires
2
Rôles utilisateur

CRUD complet :

  • Gestion des administrateurs (Create, Read, Update, Delete)
  • Gestion des utilisateurs avec rôles
  • Gestion des collections et records
  • Système de réinitialisation de mot de passe par email

Impact & Bénéfices

Automatisation des processus d'authentification : Réduction significative du temps de gestion des utilisateurs grâce à l'interface CLI intuitive.

Sécurité renforcée : Implémentation de bonnes pratiques de sécurité avec JWT, hachage des mots de passe et contrôle d'accès granulaire.

Scalabilité : Architecture containerisée permettant un déploiement facile dans différents environnements.

Expérience développeur : Documentation complète et interface CLI auto-générée facilitant l'adoption par d'autres équipes.

Apprentissages

Maîtrise de l'écosystème Go : Approfondissement des patterns Go et utilisation avancée de Cobra pour des CLI professionnelles.

Architecture de sécurité : Compréhension approfondie des mécanismes JWT, RBAC et des bonnes pratiques d'authentification.

Integration testing : Mise en place de tests d'intégration avec environnement dockerisé pour validation complète des workflows.

Documentation technique : Importance de la documentation utilisateur et technique pour l'adoption d'outils CLI.