Keycloak
Раздел про Keycloak в авторизации: что это и зачем, OAuth2 и OIDC простыми словами, realm/client/роли, Authorization Code Flow и PKCE, интеграция со Spring Security, RBAC и ABAC, токены и типичные ошибки.
Готовый сервер авторизации вместо самописной: единый вход, OAuth2/OIDC, управление пользователями и ролями. Раздел проходит путь от «что это» до интеграции со Spring и тонкостей токенов.
- Что такое Keycloak — Простыми словами: зачем нужен Keycloak, что он берёт на себя — единый вход (SSO), OAuth2/OIDC, управление пользователями и ролями, вход через соцсети, и когда он избыточен.
- OAuth2 и OIDC — Простыми словами: роли OAuth2 на бытовой аналогии, зачем нужны access, refresh и ID token, чем OAuth2 (доступ) отличается от OIDC (кто ты), что такое scopes и как в общих чертах работает Authorization Code Flow.
- Realm, client, роли — Модель Keycloak с нуля: realm как изолированное пространство, client (public vs confidential), пользователи, realm-роли против client-ролей, группы и как роли попадают в токен.
- Authorization Code Flow — Пошагово, как работает Authorization Code Flow в Keycloak: редирект на логин, код, обмен кода на токены. Зачем нужен PKCE для SPA и мобильных, почему implicit flow устарел и где хранить токены.
- Spring Security — Как подключить Spring Boot к Keycloak в роли OAuth2 Resource Server: стартер, issuer-uri и jwk-set-uri, локальная проверка JWT по JWKS, SecurityFilterChain и чтение claims из токена.
- Роли и доступ (RBAC/ABAC) — Как роли из токена Keycloak становятся правами: маппинг realm- и client-ролей в GrantedAuthority через JwtAuthenticationConverter, разница RBAC и ABAC, ошибки с префиксом ROLE_.
- Токены и ошибки — Простыми словами: из чего состоит JWT, как сервис проверяет подпись через JWKS при смене ключей, зачем нужен refresh-токен, как работают logout и отзыв сессии и где чаще ошибаются.