Что такое Keycloak
После прошлой статьи про OAuth 2.0, OpenID Connect и SAML я хочу показать более прикладную сторону вопроса.
Понимать протоколы важно. Но в реальной инфраструктуре почти всегда возникает следующий вопрос: А нужно ли вообще реализовывать аутентификацию и авторизацию отдельно в каждом внутреннем сервисе?
И вот здесь многие команды рано или поздно приходят к решениям вроде Keycloak.
━━━━━━━━━━ Что такое Keycloak? ━━━━━━━━━━
Keycloak это централизованная IAM / IdP-площадка для аутентификации и управления доступом. Если говорить проще, это сервис, который позволяет вынести значимую часть логики: ◦ логин пользователей ◦ SSO ◦ federation / brokering identity ◦ роли, группы, realm/client-модель ◦ интеграции по OpenID Connect, OAuth 2.0, SAML в одно место, а не размазывать всё это по каждому внутреннему приложению отдельно.
Про сами SAML / OIDC / OAuth 2.0 я уже писал ранее в посте: ⇨ “Войти через другой сервис” удобно, но что происходит внутри
━━━━━━━━━━ Почему это полезно для инфраструктуры? ━━━━━━━━━━
Keycloak помогает централизовать реализацию ролей/access/refresh token flow/auth/authz.
Разработчикам не нужно каждый раз заново изобретать: • форму входа • хранение identity • базовую интеграцию SSO • общую точку выдачи токенов • часть ролевой и клиентской модели доступа
Так же чем больше у вас разных реализаций аутентификации и авторизации, тем больше вероятность, что где-то будет ошибка: • слабая логика сессий • невалидная работа с токенами • разная ролевая модель • устаревший или небезопасный самописный flow • различные варианты broken access control
Когда auth-слой централизован, его: • проще анализировать • проще сопровождать • проще обновлять • проще валидировать с точки зрения AppSec
━━━━━━━━━━ Важно Keycloak это не панацея ━━━━━━━━━━
Централизация — это хорошо. Но она не отменяет риски неправильной архитектуры и эксплуатации.
Даже если у вас есть Keycloak, проблемы всё равно могут остаться, если: 1. Используются устаревшие или слабые сценарии / протоколы 2. На стороне приложений некорректно валидируются токены 3. Ролевая модель реализована формально, а доступ по факту проверяется плохо 4. Backend доверяет любому “успешному логину”, но не проверяет, что именно разрешено пользователю 5. Есть ошибки в logout, session handling, client configuration, redirect logic
━━━━━━━━━━ Keycloak: полезные материалы для изучения, интеграции и понимания ━━━━━━━━━━
• GitHub-репозиторий Keycloak github.com/keycloak/keycloak
• Официальный сайт Keycloak keycloak.org
• “Keycloak: как упростить аутентификацию и не сойти с ума” habr.com/ru/companies/clevertec/articles/897386
• “SSO через Keycloak для инфраструктурных сервисов” habr.com/ru/companies/oleg-bunin/articles/936338
#Keycloak #IAM #SSO #OAuth2 #OpenIDConnect #OIDC #SAML #AppSec #CyberSecurity #DevSecOps #Authentication #Authorization #Backend #InfoSec
· 25.03
Фёдор, крутой разбор! Особенно резонирует пункт про то, что Keycloak — не панацея. Видел проекты, где его внедряли и считали «ну всё, безопасность настроена», а потом на бэкенде токены валидировались формально — проверяли подпись, но игнорировали scope и audience. По сути, любой валидный токен давал доступ ко всему. Ещё момент: в микросервисной архитектуре централизация auth через Keycloak сильно упрощает жизнь, но важно не забывать про authorization на уровне каждого сервиса. Token introspection + policy enforcement — без этого централизация создаёт ложное чувство безопасности.
ответить
коммент удалён
· 25.03
Спасибо. Моё мнение насчёт разработки это то, что прежде чем разрабатывать что-либо, полезно понимать что делаешь. Иначе привет вайбкодер)
ответить
ответ удалён