ITSkillsCenter
Cybersécurité

Vaultwarden + Authelia : SSO unifié pour PME ouest-africaine

7 دقائق للقراءة

📍 Article principal du cluster : Vaultwarden self-hosted 2026 : guide complet. Lisez le pilier pour la vue d’ensemble.

Avoir 12 services internes auto-hébergés (Vaultwarden, Forgejo, Grafana, Uptime Kuma, n8n, NocoDB, Plausible, Outline, Penpot, Listmonk, Mailcow, Coolify) et autant de mots de passe différents pour chaque collaborateur, c’est l’enfer opérationnel. Avec Authelia en façade, vous transformez tout cela en un seul login par utilisateur, avec 2FA centralisé. Ce tutoriel détaille le branchement de Vaultwarden derrière Authelia pour une PME de 5 à 50 personnes à Dakar, Abidjan ou Cotonou.

Prérequis

  • Vaultwarden déjà déployé et fonctionnel (voir Déployer Vaultwarden sur Coolify).
  • VPS Linux avec Docker et Caddy ou Traefik.
  • Un nom de domaine maîtrisé (par exemple auth.votre-entreprise.com et vault.votre-entreprise.com).
  • Niveau attendu : avancé (vous comprenez OIDC, JWT, reverse proxy).
  • Temps estimé : 1 à 2 heures.

Étape 1 — Comprendre l’architecture

Authelia est un serveur d’authentification open source écrit en Go, qui agit en deux modes : forward authentication (Authelia valide chaque requête HTTP via le reverse proxy) et OIDC provider (Authelia délivre des tokens à des applications compatibles). Vaultwarden ne supportant pas OIDC nativement (uniquement Bitwarden Enterprise le fait), nous utiliserons le mode forward authentication.

Schéma : utilisateur → Caddy (reverse proxy) → Authelia (authentification + 2FA) → Vaultwarden si validé. L’utilisateur saisit son login Authelia une fois, puis accède transparente à tous les services protégés.

Étape 2 — Installer Authelia

Créez un dossier /srv/authelia et un fichier docker-compose.yml :

services:
  authelia:
    image: authelia/authelia:4.39
    container_name: authelia
    volumes:
      - ./config:/config
    environment:
      - TZ=Africa/Dakar
    restart: unless-stopped
    networks:
      - proxy

  redis:
    image: redis:7-alpine
    container_name: authelia-redis
    volumes:
      - ./redis:/data
    restart: unless-stopped
    networks:
      - proxy

networks:
  proxy:
    external: true

Lancez : docker compose up -d. Authelia démarre sur le port 9091 interne.

Étape 3 — Configurer Authelia

Éditez /srv/authelia/config/configuration.yml. Voici la configuration minimale fonctionnelle pour une PME :

theme: dark
default_redirection_url: https://vault.votre-entreprise.com

server:
  host: 0.0.0.0
  port: 9091

log:
  level: info

authentication_backend:
  file:
    path: /config/users_database.yml

access_control:
  default_policy: deny
  rules:
    - domain: vault.votre-entreprise.com
      policy: two_factor
      subject: "group:vault-users"
    - domain: forgejo.votre-entreprise.com
      policy: one_factor

session:
  name: authelia_session
  domain: votre-entreprise.com
  expiration: 12h
  inactivity: 1h
  redis:
    host: authelia-redis
    port: 6379

regulation:
  max_retries: 3
  find_time: 2m
  ban_time: 5m

storage:
  encryption_key: 'générez-une-clé-aléatoire-de-64-caractères-ici'
  local:
    path: /config/db.sqlite3

notifier:
  smtp:
    host: smtp-relay.brevo.com
    port: 587
    username: votre-login@brevo.com
    password: votre-clé-api
    sender: noreply@votre-entreprise.com

totp:
  issuer: votre-entreprise.com
  digits: 6

Étape 4 — Déclarer les utilisateurs

Authelia supporte trois backends d’utilisateurs : fichier YAML (parfait pour moins de 50 personnes), LDAP/Active Directory, ou base SQL. Pour une PME, le fichier suffit. Créez /srv/authelia/config/users_database.yml :

users:
  amadou:
    displayname: "Amadou Diop"
    password: "$argon2id$v=19$m=65536$..."
    email: amadou@votre-entreprise.com
    groups:
      - vault-users
      - admins
  fatou:
    displayname: "Fatou Sarr"
    password: "$argon2id$v=19$m=65536$..."
    email: fatou@votre-entreprise.com
    groups:
      - vault-users

Hashez les mots de passe avec :

docker run --rm -it authelia/authelia:4.39 authelia hash-password mot-de-passe-clair

Étape 5 — Configurer Caddy pour la forward auth

Sur votre Caddyfile :

auth.votre-entreprise.com {
  reverse_proxy authelia:9091
}

vault.votre-entreprise.com {
  forward_auth authelia:9091 {
    uri /api/verify?rd=https://auth.votre-entreprise.com
    copy_headers Remote-User Remote-Groups Remote-Name Remote-Email
  }
  reverse_proxy vaultwarden:80
}

Redémarrez Caddy : caddy reload. La prochaine fois qu’un utilisateur tente d’accéder à vault.votre-entreprise.com, il sera redirigé vers le portail Authelia.

Étape 6 — Configurer 2FA TOTP

Au premier login d’un utilisateur, Authelia envoie un email avec un lien d’activation 2FA. L’utilisateur clique, scanne un QR code avec Aegis ou Authy, saisit le code à 6 chiffres pour valider. À partir de là, chaque login Vaultwarden requiert son master password Vaultwarden ET le code TOTP Authelia. Niveau de sécurité : très élevé.

Étape 7 — Vérification de bout en bout

Test complet :

  1. Ouvrir un navigateur en mode incognito.
  2. Aller sur https://vault.votre-entreprise.com.
  3. Constater la redirection vers https://auth.votre-entreprise.com.
  4. Saisir login + mot de passe Authelia + code TOTP.
  5. Constater le retour automatique sur Vaultwarden, suivi de l’écran de saisie du master password Vaultwarden.
  6. Saisir le master password Vaultwarden, accéder au coffre.

Tester aussi la déconnexion : se déconnecter depuis Authelia (/logout) doit invalider l’accès à tous les services protégés.

Étape 8 — Ajouter d’autres services

Pour ajouter Forgejo, Grafana, Uptime Kuma, etc., il suffit d’ajouter le bloc forward_auth Caddy correspondant et la règle access_control dans Authelia. Les utilisateurs gardent un seul login pour tout l’écosystème interne.

Erreurs fréquentes

Erreur Cause Solution
Boucle de redirection infinie Cookie domain trop strict Mettre session.domain sur le domaine parent (ex: votre-entreprise.com)
Code TOTP invalide systématiquement Horloge serveur décalée Activer NTP : timedatectl set-ntp true
Authelia refuse tout login Hash de mot de passe mal formaté Régénérer avec authelia hash-password via Docker
Email 2FA jamais reçu SMTP non testé Vérifier les logs Authelia, tester avec swaks
API Vaultwarden bloquée Forward auth aussi sur les routes API Exclure /api/* et /identity/* du forward_auth pour les clients mobile
Lenteur sur l’accès Redis lent ou indisponible Vérifier que le container Redis est sain, augmenter la mémoire allouée

Cas particulier des clients mobile et bureau

Les applications Bitwarden mobile (iOS, Android) et bureau (Windows, macOS, Linux) ne savent pas gérer une page web Authelia. Vous devez exclure les routes API du forward auth pour qu’elles continuent à fonctionner :

vault.votre-entreprise.com {
  @api path /api/* /identity/* /icons/* /attachments/* /notifications/*
  reverse_proxy @api vaultwarden:80
  
  forward_auth authelia:9091 {
    uri /api/verify?rd=https://auth.votre-entreprise.com
  }
  reverse_proxy vaultwarden:80
}

Avec cette configuration, le web vault est protégé par Authelia, mais les apps mobile s’authentifient directement avec leur master password Vaultwarden. La sécurité reste élevée car Vaultwarden a son propre 2FA.

Adaptation au contexte ouest-africain

Trois ajustements pour les PME africaines. Latence des emails de récupération : Brevo et Resend délivrent en quelques secondes vers Gmail et Outlook, mais peuvent mettre 5 à 10 minutes vers Yahoo Mail (encore très utilisé en Afrique). Augmentez le délai d’expiration du token de récupération à 30 minutes via la variable identity_validation.reset_password.jwt_lifespan. Connexions intermittentes : Authelia met en cache les sessions pendant 12 heures par défaut. Si un commercial sur le terrain à Saint-Louis perd la connexion 5 minutes, il n’est pas re-déconnecté. Augmentez à 24 heures si vos collaborateurs travaillent en zones rurales. Coût : Authelia + Redis ajoute environ 50 Mo de RAM à votre VPS, sans impact perceptible sur un Hetzner CX22.

Tutoriels frères du cluster

FAQ

Authelia vs Authentik vs Keycloak vs Zitadel : que choisir ? Authelia est le plus simple à mettre en place pour une PME. Authentik offre plus de fonctionnalités (LDAP, application provisioning) mais demande plus de RAM. Keycloak et Zitadel sont enterprise-grade, surdimensionnés pour moins de 100 utilisateurs.

Puis-je connecter Authelia à Google Workspace ou Microsoft 365 ? Oui, via le mode OIDC d’Authelia avec ces fournisseurs comme Identity Provider. Cela permet le SSO basé sur les comptes existants.

Authelia stocke-t-il mes mots de passe ? Authelia stocke les hashes Argon2 des mots de passe. Le mot de passe en clair n’est jamais stocké, jamais transmis au-delà de la requête initiale.

Comment gérer la rotation des secrets de session ? La clé encryption_key ne doit jamais changer en production sans plan de migration (les sessions actives seraient invalidées). Sauvegardez-la dans Vaultwarden lui-même, dans une collection « Infrastructure ».

Combien d’utilisateurs Authelia tient-il ? Avec backend fichier YAML : 100 utilisateurs confortablement. Au-delà, basculez sur LDAP/Active Directory ou backend SQL PostgreSQL.

Pour aller plus loin

Besoin d'un site web ?

Confiez-nous la Création de Votre Site Web

Site vitrine, e-commerce ou application web — nous transformons votre vision en réalité digitale. Accompagnement personnalisé de A à Z.

À partir de 250.000 FCFA
Parlons de Votre Projet
Publicité