Архитектура и принципы работы
Архитектура
KeyCloak представляет собой написанное в технологиях Java EE веб-приложение, развёрнутое внутри сервера приложений WildFly (включён в дистрибутив). Веб-приложение включает в себя:
- административную консоль (admin console) — GUI для управления пользователями/группами и т.п.);
- account — GUI пользователя для самостоятельного управления личной информацией, смены пароля и т.п.;
- REST-интерфейс — предоставляет внешним системам возможность интегрироваться с KeyCloak, управлять пользователями, группами и т.п. программным образом;
- endpoint'ы протоколов OpenID Connect и SAML.
Клиенты и адаптеры
Веб-приложения и веб-сервисы, аутентифицируемые посредством KeyCloak, принято называть клиентами (clients). Процесс конфигурации клиента выглядит следующим образом:
- администратор регистрирует клиента через admin console;
- разработчик клиентского приложения подключает адаптер (для Java EE) или стороннюю библиотеку и настраивает их.
Проект KeyCloak предоставляет адаптеры для распространённых серверов Java EE (Tomcat/TomEE, JBoss/WildFly, Jetty), а также generic adapter для остальных серверов (GlassFish, WebLogic, WebSphere etc.)
Для C#/ASP.NET, PHP, Python и т.п. существуют сторонние библиотеки (см. Securing Applications and Services Guide).
Процесс аутентификации
Аутентификация осуществляется следующим образом:
- Пользователь открывает клиентское приложение;
- Если запрошен ресурс, требующий аутентификации, то:
- если пользователь уже аутентифицирован, открыть ресурс;
- если пользователь не аутентифицирован, перенаправить на страницу входа KeyCloak;
- В случае успешной аутентификации происходит обратное перенаправление и открытие ресурса.
Выше был описан лишь один из сценариев (interactive flow). OpenID Connect и SAML поддерживают множество дополнительных сценариев (flows); подробнее об этом см. Server Administration Guide, 6.3 Authentication Flows.