Базовая авторизация в Docker
Базовая авторизация спрашивает имя и пароль, прежде чем отдать страницу. Прокси сравнивает введённые данные с хешем в метке посредника и только потом передаёт запрос в контейнер. Сам whoami пароль не проверяет: защита стоит на Traefik.
Посредник auth задают меткой пользователей, роутер web на site.localhost получает цепочку middlewares=auth.
Сервис whoami на образе traefik/whoami без ports и прокси в одном файле:
services:
proxy:
image: traefik:3
command:
- --providers.docker=true
- --providers.docker.exposedbydefault=false
- --entrypoints.web.address=:80
ports:
- "80:80"
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
whoami:
image: traefik/whoami
labels:
- traefik.enable=true
- traefik.http.middlewares.auth.basicauth.users=test:$$apr1$$H6uskkkW$$IgXLP6ewTrSuBkTrqE8wj/
- traefik.http.routers.web.rule=Host(`site.localhost`)
- traefik.http.routers.web.middlewares=auth
Подъём в фоне:
docker compose up -d
По адресу http://site.localhost
браузер покажет запрос учётной записи.
Логин test и пароль test
открывают текст whoami, неверная пара снова вызывает запрос.
Опишите сервис desk на traefik/whoami с хостом desk.localhost, посредником gate и тем же пользователем test в полном файле с прокси.
Откройте http://desk.localhost, введите test и test и убедитесь, что страница whoami видна только после входа.