RousselTMLEARNING

Article · Traefik: From Discovery to Expertise

Middlewares - securing with basicauth, forwardauth...

This article is available in French.

1. Le rôle des middlewares #

Entre le routeur et le service.

Principe #

Un routeur choisit le service selon la requête (hôte, chemin, en-têtes). Avant d'atteindre le service, la requête peut traverser des middlewares qui l'authentifient, la filtrent ou la transforment. Ils se déclarent une fois et se réutilisent sur plusieurs routeurs.

Chaîne de middlewares Traefik
L'ordre compte : limiter le débit avant d'authentifier protège aussi le service d'authentification.

2. L'authentification #

BasicAuth pour un outil interne, ForwardAuth pour un vrai SSO.

BasicAuth avec Docker #

# Générer l'empreinte du mot de passe (les $ sont doublés dans un fichier Compose)
htpasswd -nbB admin 'MotDePasse-Solide' | sed -e 's/\$/\$\$/g'
services:
  whoami:
    image: traefik/whoami
    labels:
      - traefik.http.routers.whoami.rule=Host(`whoami.exemple.fr`)
      - traefik.http.routers.whoami.middlewares=auth@docker
      - traefik.http.middlewares.auth.basicauth.users=admin:$$2y$$05$$…

ForwardAuth : déléguer à un service d'authentification #

Avec ForwardAuth, Traefik envoie chaque requête à un service externe (Authelia, oauth2-proxy, Authentik). Une réponse 2xx autorise la requête, toute autre réponse est renvoyée au client (souvent une redirection vers la page de connexion).

http:
  middlewares:
    sso:
      forwardAuth:
        address: "http://authelia:9091/api/authz/forward-auth"
        trustForwardHeader: true
        authResponseHeaders: ["Remote-User", "Remote-Groups", "Remote-Email"]
Erreur Courante : BasicAuth transmet le mot de passe à chaque requête : ne l'utilisez qu'en HTTPS, et préférez un SSO avec MFA pour les outils sensibles.

3. Les autres middlewares utiles #

Filtrer, protéger, transformer.

Sélection #

MiddlewareRôleExemple
headersEn-têtes de sécurité et CORSstsSeconds: 31536000, contentTypeNosniff: true
rateLimitLimiter le débit par clientaverage: 100, burst: 50
ipAllowListN'autoriser que certaines adressessourceRange: ["10.0.0.0/8"]
redirectSchemeRediriger HTTP vers HTTPSscheme: https, permanent: true
stripPrefixRetirer un préfixe de chemin/api → /
retry, circuitBreakerRésilience vers le backendattempts: 3, expression: NetworkErrorRatio() > 0.3
compressCompression gzip, brotliréponses texte
chainRegrouper plusieurs middlewaresune chaîne « sécurité » réutilisable

Une chaîne réutilisable #

http:
  middlewares:
    securite:
      chain:
        middlewares: [limite, entetes]
    limite:
      rateLimit: { average: 100, burst: 50 }
    entetes:
      headers:
        stsSeconds: 31536000
        stsIncludeSubdomains: true
        contentTypeNosniff: true
        frameDeny: true
        referrerPolicy: strict-origin-when-cross-origin
Migration v2 → v3 : En Traefik v3, ipWhiteList est devenu ipAllowList. Vérifiez les noms lors d'une migration depuis la v2.

📄 Traefik : sécuriser et transformer les requêtes avec les middlewares (BasicAuth, ForwardAuth…) →

My progress

  • ⏱ Estimated time : ≈ 7 min

Sign in to track your progress and take notes. Sign in

💬 Ask a question

Recommended Articles

Stratégies de déploiement avec Traefik : blue/green, canary et rolling

Mettre en œuvre les stratégies de déploiement avec Traefik : rolling update par l'orchestrateur, ...

Canary automatisé avec Flagger et Traefik sur Kubernetes

Automatiser les déploiements canary avec Flagger et Traefik : ressource Canary, analyse des métri...

Maîtriser les ACLs dans HAProxy : Le Guide Complet

Guide complet sur les ACLs HAProxy : apprenez à configurer le routage intelligent, le contrôle d'...

Maîtriser les ACLs dans HAProxy

Guide complet sur les ACLs HAProxy : apprenez à configurer le routage intelligent, le contrôle d'...

Gestion des certificats SSL/TLS avec Let's Encrypt et ACME

Apprenez à automatiser la génération et le renouvellement de vos certificats SSL/TLS avec Let's E...

Protocole ACME : serveur ACME, challenges http-01 et dns-01, automatisation TLS

Comprendre le protocole ACME : rôle du serveur ACME (Let's Encrypt, ZeroSSL, step-ca), challenges...

HAProxy dans Kubernetes : L'Ingress Controller Haute Performance

Découvrez en profondeur l'intégration de HAProxy dans Kubernetes. Architecture Direct-to-Pod, opt...

HAProxy comme Ingress Controller Kubernetes : Le Guide de Production

Découvrez comment utiliser HAProxy comme Ingress Controller dans Kubernetes. Architecture Direct-...

HAProxy et SSL : terminaison TLS, SSL passthrough et sécurisation

HAProxy et SSL/TLS : terminaison SSL, SSL passthrough en mode TCP avec routage SNI, ré-chiffremen...

Support us

♥ SUPPORT US

Support RousselTM Learning

Courses, articles, labs and certificates stay free with no intrusive ads. A voluntary contribution, of any amount you choose, pays for hosting, lab environments and new content.

Contribute with PayPal Any amount · card or PayPal accountLearn more
QR code PayPal
Or scan this QR code with your phone

Thank you, every contribution counts!