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

L'API de Traefik : inspecter la configuration et sécuriser le tableau de bord

Utiliser l'API REST de Traefik pour inspecter routeurs, services, middlewares et entrypoints, l'e...

Traefik : vue d'ensemble, architecture et premier déploiement

Découvrir Traefik : reverse proxy et load balancer cloud-native, entrypoints, routers, services, ...

Traefik comme Ingress Controller pour Kubernetes (Helm, IngressRoute, Gateway API)

Installer Traefik dans Kubernetes avec Helm et publier des applications avec Ingress, les CRD Ing...

Bonnes pratiques Traefik : sécurité, haute disponibilité et observabilité

Bonnes pratiques Traefik : sécurisation du dashboard et du socket Docker, TLS moderne, middleware...

Traefik : les providers (Docker, Kubernetes, Nomad, Consul, fichiers, clés-valeurs)

Les providers alimentent la configuration dynamique de Traefik : découverte des services Docker, ...

Les plugins Traefik : l'exemple de CrowdSec pour bloquer les attaques

Étendre Traefik avec des plugins (catalogue officiel, interpréteur Yaegi), puis protéger ses appl...

Traefik : les métriques avec Prometheus et OpenTelemetry

Exposer les métriques de Traefik (Prometheus ou OTLP), comprendre les séries par entrypoint, rout...

Traefik : les logs (journaux applicatifs et access logs)

Configurer les deux journaux de Traefik : le journal de fonctionnement (niveaux, format) et les a...

Traefik : le tracing distribué avec OpenTelemetry

Activer le tracing de Traefik v3 avec OpenTelemetry (OTLP), propager le contexte W3C vers les app...

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!