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.
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 #
| Middleware | Rôle | Exemple |
|---|---|---|
headers | En-têtes de sécurité et CORS | stsSeconds: 31536000, contentTypeNosniff: true |
rateLimit | Limiter le débit par client | average: 100, burst: 50 |
ipAllowList | N'autoriser que certaines adresses | sourceRange: ["10.0.0.0/8"] |
redirectScheme | Rediriger HTTP vers HTTPS | scheme: https, permanent: true |
stripPrefix | Retirer un préfixe de chemin | /api → / |
retry, circuitBreaker | Résilience vers le backend | attempts: 3, expression: NetworkErrorRatio() > 0.3 |
compress | Compression gzip, brotli | réponses texte |
chain | Regrouper plusieurs middlewares | une 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-originMigration v2 → v3 : En Traefik v3,ipWhiteListest devenuipAllowList. Vérifiez les noms lors d'une migration depuis la v2.
My progress
Sign in to track your progress and take notes. Sign in
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...