Certaines applications n’ont pas de mécanisme d’authentification. Traefik permet d’ajouter une authentification simple par couple identifiant/mot de passe.
Pour se faire, j’utiliserai les fichiers de configuration dynamique pour Traefik (rappel sur les configurations à cette adresse (CZS)).
Procédure
Le chiffrement des mots de passe d’authentification pour Traefik se fait via MD5, SHA1 ou BCrypt. Ici ce sera du BCrypt, en utilisant le site web « bcrypt.fr » pour générer les hash. L’utilisation du paquet htpasswd
est aussi envisageable.
Dans votre fichier docker-compose.yml, ajoutez un label « middleware » pour les services que vous souhaitez protéger :
traefik.http.routers.NOMSERVICE.middlewares: [email protected]
Maintenant, effectuons la configuration du middleware – éditez votre fichier traefik_dynamic.toml
:
[http.middlewares]
[http.middlewares.authentification.basicAuth]
users = [ "toto:$2y$10$Q.lECM9D3rP.vzbsT95K7uLT4cRh4FW1DsEyZbsg5rR73pWDuZ1Tm" ]
Si vous utilisez un fichier .yml
, voici la configuration :
http:
middlewares:
authentification:
basicAuth:
users:
- toto:$2y$10$Q.lECM9D3rP.vzbsT95K7uLT4cRh4FW1DsEyZbsg5rR73pWDuZ1Tm
L’utilisateur créé (toto) a pour mot de passe « pouetpouet ». Dès à présent, refaite un docker-compose up -d
pour recréer vos services et ainsi bénéficier d’une authentification « basique » !
La création de ce middleware est utilisable pour toutes les ressources derrière Traefik. Vous pouvez aussi bien l’utiliser pour protéger une page sans authentification qu’une page ayant déjà un système d’authentification.