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Приложения, которые используют Keycloakfrontend-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Хранилище данных KeycloakPostgreSQL

🎯 Итог

Keycloak — это мощная система управления идентификацией и доступом, которая состоит из realm’ов, пользователей, клиентов, ролей, аутентификации, API и базы данных. Она поддерживает OAuth 2.0, OpenID Connect, SAML, а также интеграцию с LDAP / Active Directory.