Перейти к содержанию

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 целевых сервисов.


Проверка работы

  1. Откройте любую страницу за защищённым роутом Grafana/Gitlab и убедитесь, что происходит редирект на Keycloak.
  2. После логина проверьте cookie traefik-forward-auth в DevTools браузера.
  3. Просмотр логов: 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-конфиг.