Keycloak — система управления доступом с открытым кодом¶
Keycloak — это система управления доступом и идентификацией (Identity and Access Management, IAM) с открытым исходным кодом, предназначенная для централизованной аутентификации, авторизации и управления пользователями веб-приложений и сервисов. Keycloak поддерживает стандарты OpenID Connect, OAuth 2.0 и SAML 2.0, что позволяет интегрировать его с широким спектром приложений без написания собственной логики аутентификации. Проект изначально разрабатывался компанией Red Hat, в настоящее время развивается в рамках сообщества и поддерживается в продуктах Red Hat (Red Hat Single Sign-On, Red Hat build of Keycloak).
¶Общие сведения
Keycloak позволяет вынести аутентификацию и управление доступом из приложений в отдельный сервис. Вместо того чтобы каждое приложение реализовало собственный механизм входа, регистрации, восстановления пароля и управления ролями, разработчики подключают его к Keycloak и делегируют ему эти функции. Поддерживаются локальные учётные записи, вход через внешние провайдеры (LDAP/Active Directory, социальные сети), многофакторная аутентификация, federated identity и single sign-on (SSO) — единый вход для нескольких приложений после одной аутентификации.
Проект распространяется под лицензией Apache License 2.0. Исходный код доступен на GitHub. Keycloak написан на Java, построен на базе WildFly (ранее JBoss) и использует базы данных PostgreSQL, MySQL, MariaDB, Oracle, MS SQL для хранения состояния.
¶История
Keycloak был создан Стэном Силвой (Stan Silvert) и Биллом Бёрком (Bill Burke) в Red Hat в 2012 году. Первый публичный релиз состоялся в 2014 году. В 2015 году проект вошёл в состав Red Hat JBoss Middleware. На базе Keycloak был создан коммерческий продукт Red Hat Single Sign-On 7.0 (2016), а позже Red Hat Single Sign-On 8.0 (2022), построенный на Quarkus вместо WildFly.
В 2022 году Red Hat объявила о создании форка Keycloak под названием «Red Hat build of Keycloak», который развивается отдельно от upstream-проекта. Сообщество Keycloak продолжает развиваться независимо, выпуская крупные версии примерно раз в полгода. Среди активных контрибьюторов — компании IBM, Microsoft, AWS, а также независимые разработчики.
¶Основные возможности
- Аутентификация: логин и пароль, одноразовые коды (OTP), WebAuthn/FIDO2-ключи, вход через email-подтверждение, восстановление пароля.
- Single Sign-On (SSO): после входа в одно приложение пользователь автоматически авторизован в остальных, подключённых к тому же realm.
- Протоколы: OpenID Connect (включая потоки authorization code, implicit, client credentials, device code), OAuth 2.0, SAML 2.0.
- Управление пользователями: создание, импорт, группировка, роли (realm-level и client-level), атрибуты, ручной и автоматический запрет доступа.
- Federation: подключение внешних источников пользователей (LDAP, Active Directory) и настройка маппинга атрибутов и групп.
- Многоарендность (multitenancy): изоляция пользователей и клиентов в рамках одного инстанса через разделение на realms.
- Брендинг: кастомизация страниц логина, регистрации и восстановления пароля (темы, логотип, тексты).
- Администрирование: веб-консоль admin console, REST API, управление через CLI.
¶Архитектура
Keycloak работает как отдельный сервис (поставляется как standalone-сервер, в контейнере Docker, в Kubernetes через Helm-чарт или Operator). Приложения подключаются к нему как клиенты (clients). Разделяются два понятия: realm — изолированное пространство с собственными пользователями, клиентами и настройками; client — приложение, использующее Keycloak для аутентификации.
Для веб-приложений используется браузерный редирект на страницу Keycloak, после успешного входа пользователь возвращается обратно с кодом или токеном. Для сервисов и API применяется проверка JWT-токенов, выпущенных Keycloak. Для доверия между сервисами поддерживаются mTLS и обмен ключами.
¶Применение
Keycloak широко используется в корпоративной разработке для обеспечения SSO между внутренними сервисами, в микросервисных архитектурах для централизованной проверки токенов, в open source-проектах (например, в GitLab, Grafana, Camunda, OpenShift) как опциональный провайдер идентификации. В России проект встречается в корпоративных ИТ-платформах и государственных системах, где требуется единый вход и аудит доступа.
¶Альтернативы
Среди сопоставимых решений с открытым кодом — Authentik, Zitadel, Ory Hydra/Ory Kratos, Casdoor, CAS (Apereo), а также коммерческие платформы Okta, Auth0, Microsoft Entra ID (Azure AD).
¶Интересные факты
- Keycloak входит в число наиболее активно развиваемых IAM-проектов с открытым кодом: по данным репозитория на GitHub, у проекта более 25 000 звёзд (stars).
- Начиная с версии 22.0 (2023) Keycloak официально поддерживает запуск в контейнере без встроенного базового образа на WildFly, используя собственный нативный дистрибутив на Quarkus.
¶Источники
- Официальная документация Keycloak: keycloak.org/documentation
- Репозиторий проекта на GitHub: github.com/keycloak/keycloak
- Red Hat Single Sign-On Documentation
- Статья «Introducing Keycloak» на.redhat.com developer blog
