Большинство auth-SDK пишутся по разу под язык и копируют одну и ту же оркестрацию по кругу. Мы инвертируем это: одно TypeScript-ядро для браузера, тонкие адаптеры под провайдера и под язык — для всего остального.
Браузерная сторона
- Ядро authkit-ts — конечный автомат флоу: start, challenge, verify, complete, error.
- Адаптеры провайдеров — привязывают ядро к credential-бэкенду (первым — Hanko). Адаптер знает бэкенд; ядро — нет.
- Дистрибуция — UMD-бандл, опубликованный как
ui8kit.jsрядом с AuthKit; npm-пакет вnpmjs.com/org/authfly.
Бэкенд-сторона
- Go — first-class, поскольку IdP на Go. Переиспользует контракты из
core. - TypeScript / Node — серверные хелперы для OIDC-клиентов и валидации сессий.
- Python, PHP, .NET — тонкие SDK поверх той же Management API и OIDC-эндпоинтов.
Паттерн адаптера
Каждый адаптер реализует три функции: превратить пользовательский ввод в credential challenge, проверить ответ и отдать вызывающему нормализованную identity. Цикл оркестрации остаётся в ядре, поэтому поведение одинаково на всех стэках.
Почему это лучше переписывания под каждый язык
- Багфикс — в одном месте.
- Паритет поведения проверяется проигрыванием одного и того же флоу против каждого адаптера.
- Новые провайдеры приходят как адаптеры, а не как форки.