Auth — Traefik Forward-Auth
Назначение сервиса
auth предоставляет Single Sign-On через механизмы OIDC (Keycloak) для всех веб-приложений системы мониторинга. Traefik использует его как middleware ForwardAuth, чтобы проверять токен пользователя и проксировать X-Forwarded-User в backend-сервисы.
Структура каталогов
config/services/auth/
├─ docker-compose.yml # запуск контейнера
└─ .env_example # пример переменных окружения
.env параметры
| Переменная | Описание |
|---|---|
COMPOSE_PROJECT_NAME |
Префикс контейнера (опц.) |
DEFAULT_PROVIDER |
Должно быть oidc для Keycloak |
PROVIDERS_OIDC_ISSUER_URL |
https://keycloak.<domain>/realms/<realm> |
PROVIDERS_OIDC_CLIENT_ID |
ID OIDC-клиента в Keycloak |
PROVIDERS_OIDC_CLIENT_SECRET |
Secret клиента |
SECRET |
Любая строка >32 символов для подписи cookie |
COOKIE_DOMAIN |
Домен ( example.com ), на который выставляется cookie |
COOKIE_NAME / CSRF_COOKIE_NAME |
Названия cookie (оставьте по-умолчанию) |
LOG_LEVEL |
debug, info, warn, error |
BASIC_AUTH |
Добавить BASIC auth (формат user:$$apr1$$...) |
⚠️ Если Traefik работает без HTTPS (dev-режим) — раскомментируйте
INSECURE_COOKIE.
Запуск
cd config/services/auth
cp .env_example .env # заполните значения
docker compose up -d
URI сервиса: http://monitoring-forward-auth:4181 (внутри docker-сети). Traefik подключается к нему через labels, указанные в docker-compose.yml целевых сервисов.
Проверка работы
- Откройте любую страницу за защищённым роутом Grafana/Gitlab и убедитесь, что происходит редирект на Keycloak.
- После логина проверьте cookie
traefik-forward-authв DevTools браузера. - Просмотр логов:
bash docker compose logs -f monitoring-forward-auth | grep WARN
Частые ошибки
- 401 Unauthorized — проверьте
SECRETидентичен в Traefik и .env. - Callback URI mismatch — убедитесь, что в Keycloak-клиенте добавлен redirect
https://<service>/oauth2/callback. - Cookie “SameSite=Lax” — в старых версиях Chrome; обновите до 2.x образа.
Обновление версии
docker pull thomseddon/traefik-forward-auth:2
# остановить и поднять контейнер
docker compose down && docker compose up -d
Резервное копирование
Сервис stateless: достаточно сохранить .env и Traefik-конфиг.