Keycloak имеет модульную архитектуру, которая позволяет легко интегрировать его с различными системами и сервисами. Рассмотрим основные компоненты:
🔹 1. Realm (Область безопасности)
- Realm — это изолированная среда в Keycloak, в которой хранятся пользователи, клиенты, роли, политики безопасности.
- Можно создать несколько realm’ов, например:
master
— основной realm для администрирования.ecommerce
— отдельный realm для интернет-магазина.crm
— realm для системы управления клиентами.
📌 Пример: Если у вас несколько независимых приложений (интернет-магазин и CRM-система), они могут работать в разных realm’ах.
🔹 2. Users (Пользователи)
- В каждом realm можно создать пользователей, управлять их паролями, ролями и группами.
- Поддержка Self-Registration (самостоятельная регистрация пользователей).
- Встроенные механизмы восстановления пароля.
📌 Пример: Пользователь может входить в систему через пароль, одноразовый код (OTP) или внешнего IdP (Google, Facebook и т. д.).
🔹 3. Clients (Клиенты)
- Client — это приложение или сервис, который использует Keycloak для аутентификации и авторизации.
- Поддерживаются разные типы клиентов:
- Public (безопасный вход для фронтенда) → SPA-приложения (React, Angular, Vue).
- Confidential (закрытый клиент) → Backend (Spring Boot, Node.js, .NET).
- Bearer-Only (только API) → Микросервисы, работающие с JWT.
📌 Пример: Приложение ecommerce-web
и мобильное приложение ecommerce-mobile
могут быть клиентами в Keycloak.
🔹 4. Roles (Роли) и Groups (Группы)
- Роли (Roles) — определяют уровень доступа пользователя.
admin
— полный доступ.manager
— управление заказами.user
— обычный клиент.
- Группы (Groups) — помогают управлять правами для групп пользователей.
📌 Пример:
Если пользователь john_doe
входит в группу customers
, то он получает роли user и can_create_order.
🔹 5. Identity Providers (IdP)
- Подключение внешних провайдеров аутентификации, таких как:
- Google, Facebook, GitHub, Microsoft, Okta (OAuth 2.0 / OpenID Connect).
- LDAP / Active Directory (Enterprise-аутентификация).
- SAML 2.0 (SSO с корпоративными сервисами).
📌 Пример:
Можно настроить SSO через Google, чтобы пользователи могли входить через корпоративные Google-аккаунты.
🔹 6. Authentication & Authorization Flows (Механизмы аутентификации)
- Authentication Flow — определяет процесс входа в систему.
- Поддержка Multi-Factor Authentication (MFA).
- Возможность кастомизации (например, добавить Captcha при входе).
📌 Пример:
Можно настроить вход по паролю + OTP через SMS или e-mail.
🔹 7. Protocols (Протоколы аутентификации и авторизации)
Keycloak поддерживает стандартные протоколы аутентификации и авторизации:
- OAuth 2.0 / OpenID Connect (OIDC) → API, микросервисы.
- SAML 2.0 → Корпоративные приложения.
- LDAP / Active Directory → Интеграция с существующими каталогами пользователей.
📌 Пример:
REST API может использовать JWT (OAuth 2.0), а корпоративное приложение — SAML.
🔹 8. Keycloak Admin Console (Панель управления)
- Веб-интерфейс для администрирования Keycloak.
- Позволяет управлять пользователями, клиентами, ролями, настройками безопасности.
- Доступен по
http://localhost:8080/admin
.
📌 Пример:
Администратор может создать пользователя, выдать ему роли и подключить аутентификацию через Google.
🔹 9. Keycloak REST API
- Позволяет управлять Keycloak программно.
- Можно создавать пользователей, управлять токенами, ролями и т. д.
📌 Пример: Создание пользователя через API:
curl -X POST "http://localhost:8080/auth/admin/realms/myrealm/users" \
-H "Authorization: Bearer <admin_token>" \
-H "Content-Type: application/json" \
-d '{
"username": "john_doe",
"email": "john@example.com",
"enabled": true
}'
🔹 10. Keycloak Database (Хранилище данных)
- По умолчанию Keycloak использует PostgreSQL или H2 (in-memory).
- Можно подключить MySQL, MariaDB, Oracle, Microsoft SQL Server.
📌 Пример:
Для production-релизов лучше использовать PostgreSQL.
📊 Краткое сравнение ключевых компонентов Keycloak
Компонент | Описание | Пример |
---|---|---|
Realm | Изолированная область безопасности | ecommerce , crm |
Users | Управление пользователями | john_doe |
Clients | Приложения, которые используют Keycloak | frontend-app , api-service |
Roles & Groups | Роли и группы для управления доступом | admin , manager |
Identity Providers | Внешние провайдеры аутентификации | Google, LDAP |
Authentication Flow | Гибкие настройки входа в систему | Пароль + OTP |
Protocols | Поддерживаемые протоколы | OAuth 2.0, SAML |
Admin Console | Веб-интерфейс управления | http://keycloak.example.com/admin |
REST API | Программное управление Keycloak | Создание пользователей |
Database | Хранилище данных Keycloak | PostgreSQL |
🎯 Итог
Keycloak — это мощная система управления идентификацией и доступом, которая состоит из realm’ов, пользователей, клиентов, ролей, аутентификации, API и базы данных. Она поддерживает OAuth 2.0, OpenID Connect, SAML, а также интеграцию с LDAP / Active Directory.