# Million Miles Auth Локальный POC с `Authentik` и кастомным frontend: - регистрация пользователя на своей форме - вход пользователя на своей форме - Authentik используется как backend авторизации - после входа frontend показывает данные из `id_token` ## Что в проекте - `docker-compose.yml` поднимает `postgresql`, `redis`, `authentik`, `authentik-worker` и `frontend` - `authentik/blueprints/mm-custom-authentication-flow.yaml` создаёт flow, provider и application - `frontend/server.js` содержит UI и логику регистрации/входа ## Порты - frontend: `http://localhost:3000` - Authentik admin: `http://localhost:9000` ## Быстрый старт ```bash docker compose up --build ``` Если нужно полностью пересобрать проект с чистыми данными: ```bash docker compose down -v docker compose up --build ``` Первый запуск Authentik может занять несколько минут. Нужно дождаться, пока `authentik-worker` применит blueprint. ## Удобный локальный `.env` для теста Для быстрого ручного тестирования можно использовать такие локальные значения в `.env`: ```env AUTHENTIK_IMAGE=docker.io/authentik/server AUTHENTIK_TAG=2026.2.2 PG_DB=authentik PG_USER=authentik PG_PASS=authentik AUTHENTIK_SECRET_KEY=change-me-local-secret AUTHENTIK_BOOTSTRAP_EMAIL=admin@millionmiles.local AUTHENTIK_BOOTSTRAP_PASSWORD=admin123456 AUTHENTIK_BOOTSTRAP_TOKEN=local-bootstrap-token-change-me APP_URL=http://localhost:3000 SESSION_SECRET=local-session-secret-change-me AUTHENTIK_PUBLIC_URL=http://localhost:9000 AUTHENTIK_INTERNAL_URL=http://host.docker.internal:9000 AUTHENTIK_API_TOKEN=local-bootstrap-token-change-me AUTHENTIK_LOGIN_FLOW=mm-custom-authentication-flow OIDC_CLIENT_ID=mm-custom-frontend OIDC_CLIENT_SECRET=mm-custom-secret OIDC_ISSUER=http://localhost:9000/application/o/mm-custom-frontend/ OIDC_REDIRECT_URI=http://localhost:3000/auth/callback AUTH_DEBUG=false ``` ## Как зайти в админку Authentik ```txt http://localhost:9000 ``` Логин администратора берётся из `.env`: - email: значение `AUTHENTIK_BOOTSTRAP_EMAIL` - password: значение `AUTHENTIK_BOOTSTRAP_PASSWORD` Или ```txt admin@millionmiles.local admin123456 ``` ## Что создаётся автоматически Blueprint создаёт: ```txt Flow: Million Miles Custom Authentication Slug: mm-custom-authentication-flow OAuth2/OIDC Provider: Million Miles Custom Frontend Application slug: mm-custom-frontend Client ID: mm-custom-frontend Client Secret: mm-custom-secret Redirect URI: http://localhost:3000/auth/callback ``` ## Как быстро всё протестировать 1. Открой `http://localhost:3000/register` 2. Зарегистрируй нового пользователя 3. После регистрации тебя перекинет на `/login` 4. Войди с только что созданными `email/password` 5. После успешного входа откроется `/dashboard` 6. На dashboard увидишь данные пользователя из JWT `id_token` ## Что проверить в админке ```txt Applications -> Applications -> Million Miles Applications -> Providers -> Million Miles Custom Frontend Flows and Stages -> Flows -> Million Miles Custom Authentication Directory -> Users ``` ## Если OIDC provider ещё не применился Если frontend пишет, что провайдер ещё не готов, проверь worker: ```bash docker compose logs -f authentik-worker ```