Снимаете Hydra — не переписываете login/consent с нуля
Admin API — как у ORY Hydra: login_challenge / consent_challenge, accept/reject. По умолчанию достаточно challenge id и доступа к Admin API; нужно строже — включите strict-режим с accept_token.
Модульный сервер авторизации с открытым кодом: OAuth 2.0, OIDC и GNAP в одном ядре. core, consent и rbac — отдельные артефакты. Поставь только то, что нужно. Замени любой модуль своим — без форка монолита.
AGPLv3 · Go · совместимая миграция с ORY Hydra login/consent
Granto — не ещё один цельный IdP. Это протокольное ядро плюс отдельные модули, которые можно ставить, снимать и менять местами, не трогая остальное.
Granto — линейка независимых модулей авторизации с общими контрактами, а не один большой сервис:
| Модуль | Роль | Статус |
|---|---|---|
core | ядро AS: сессии, OAuth 2.0, OpenID Connect, GNAP | готово: OAuth2/OIDC |
consent | login/consent UX: engine + плагины способов входа | roadmap |
rbac | авторизация на ролях и политиках | roadmap |
Каждый модуль можно установить отдельно, не устанавливать вовсе или заменить своей реализацией — если соблюдён контракт (API). Подробнее — в архитектуре.
| Granto | ORY Hydra | Keycloak | Auth0 / Okta | |
|---|---|---|---|---|
| Модули — отдельные артефакты | ✓ | частично (AS отдельно, но не линейка) | ✕ монолит | ✕ только облако |
| Consent — продукт (engine + плагины) | roadmap | ✕ «напишите сами» | частично, внутри SPI | частично, в их runtime |
| OAuth + OIDC + GNAP в одном ядре | ✓ (GNAP — в разработке) | OAuth/OIDC без GNAP | без GNAP | без GNAP |
| Публичный API = только RFC | ✓ | ✓ | частично + proprietary | снаружи стандарт, внутри — их API |
| Hydra-like Admin + strict accept | ✓ | исходный паттерн | ✕ другая модель | ✕ |
logout_scope: session / device / subject | ✓ | руками поверх базового logout | другая модель (realm sessions) | через Enterprise-фичи |
Полная таблица (9 продуктов, 8 критериев) — в документации.
docker compose up -d # postgres + redis + core
curl localhost:4444/.well-known/openid-configurationcore поднимается как один бинарник, без встроенного UI — consent/login обслуживает ваш собственный процесс (или наш — см. статус и roadmap). Полный гайд — быстрый старт в документации.
Это bit-identical API с ORY Hydra? Нет. Мы переносим идею и модель login/consent-приложений Hydra (challenge → accept/reject → verifier), а не байт-в-байт копируем формат. Честные отличия — в гайде по миграции.
Можно использовать только core, без consent и rbac? Да. Это и есть основная идея: core — самодостаточный authorization server, consent и rbac — опциональные модули поверх него.
Чем это лучше, чем просто Keycloak? Если вам нужен готовый IdP с темами, пользователями и админкой «из коробки» — вам, возможно, и правда нужен Keycloak. Granto — для тех, кому нужен только протокол, а всё остальное — своё или по частям.
Какая лицензия? AGPLv3.
Production-ready? core прошёл несколько раундов review (корректность + безопасность). consent, rbac и GNAP — ещё не готовы для прод-замены существующего стека; честный статус — в roadmap.