ZITADEL POC
POC с кастомными формами login и register, где ZITADEL используется только как backend IdP.
/login— кастомная форма входа/register— кастомная форма регистрации/me— JSON с claims из JWT, выданного ZITADEL/dashboard— UI, который показывает данные из/me
Приложение не использует hosted login UI ZITADEL для пользовательского входа:
- не используется
/ui/login/loginname - не используется
/ui/login/password - не парсится hosted HTML, CSRF или
authRequestIDстарого hosted login - браузер не уходит на hosted SSO-страницы ZITADEL при входе через
http://localhost:3001/login
Пароли и учетные записи хранятся в ZITADEL, не в нашем приложении.
Запуск
docker compose down -v
docker compose up --build
Первый запуск ZITADEL может занять несколько минут.
Адреса
Frontend:
http://localhost:3001
ZITADEL Console:
http://zitadel.localhost:8081
Как работает вход
- Регистрация создает пользователя в ZITADEL через API:
POST /v2/users/human
- Вход проверяет
email/passwordчерез официальный Session API ZITADEL:
POST /v2/sessions
PATCH /v2/sessions/{sessionId}
-
После успешной аутентификации backend завершает OIDC auth request и получает настоящий
id_token/access_tokenот ZITADEL. -
/meвалидирует и декодируетid_token, затем возвращает только claims:
subemailnamepreferred_usernameissaudiatexp
/dashboardпоказывает именно JSON из/me, а не raw JWT.
Хранение токенов
- токены не хранятся в
localStorage - токены не хранятся в
sessionStorage - используется
HttpOnlycookie - используется
SameSite=Lax - в production cookie должна быть
Secure=true - в local dev
Secure=false
Password Policy
Локальная валидация и ZITADEL policy выровнены под тот же набор правил, что и в проекте Authentik:
- минимум 8 символов
- хотя бы одна заглавная буква
- хотя бы одна строчная буква
- хотя бы одна цифра
Logout
POST /logout
Этот endpoint очищает cookie приложения и закрывает ZITADEL session, если она есть.
Out Of Scope
В рамках этого POC не реализованы:
- sessions UI
- consent UI
- MFA devices UI
- connected services
- app passwords
Description
Languages
JavaScript
99.8%
Dockerfile
0.2%