Realm (Область безопасности) в Keycloak — это изолированная среда, внутри которой управляются пользователи, клиенты (приложения), роли, политики аутентификации и авторизации.

Каждый realm полностью независим и не имеет доступа к пользователям и настройкам других realm’ов.


📌 1. Зачем нужны realm’ы?

Realm позволяет:

  • Изолировать разные системы, приложения или организации внутри одного Keycloak.
  • Гибко управлять пользователями и их правами.
  • Использовать отдельные правила аутентификации (например, SSO или MFA) для разных групп пользователей.

💡 Пример:
Компания может создать отдельные realm’ы для разных продуктов:

  • ecommerce-realm — для интернет-магазина.
  • crm-realm — для системы управления клиентами.
  • internal-realm — для сотрудников.

Каждый из этих realm’ов имеет свои наборы пользователей, клиентов, ролей и настроек.


🔹 2. Виды realm в Keycloak

🟢 1. Master Realm

  • Создаётся по умолчанию при установке Keycloak.
  • Используется для администрирования всех остальных realm’ов.
  • В master-realm хранится администратор Keycloak, который может управлять другими realm’ами.

📌 Пример:
admin — это пользователь внутри Master Realm, который управляет Keycloak.


🟢 2. Custom Realm (Пользовательский)

  • Это realm, созданный администратором для конкретного приложения или организации.
  • В нём настраиваются пользователи, роли, клиенты и политики безопасности.

📌 Пример:
Вы создаёте company-realm, в котором:

  • Пользователи — клиенты интернет-магазина.
  • Клиенты — ecom-web, ecom-api, mobile-app.
  • Роли — admin, user, manager.

🔹 3. Как создать Realm в Keycloak

Через Admin Console

  1. Перейдите в Keycloak Admin Console (http://localhost:8080/admin).
  2. В меню слева выберите “Create Realm”.
  3. Введите имя realm (например, ecommerce).
  4. Нажмите “Save”.

Через REST API

curl -X POST "http://localhost:8080/auth/admin/realms" \
     -H "Authorization: Bearer <admin_token>" \
     -H "Content-Type: application/json" \
     -d '{
           "realm": "ecommerce",
           "enabled": true
         }'
 

✅ Теперь в Keycloak появится новый realm ecommerce.


🔹 4. Какие сущности управляются в realm?

Внутри realm создаются и управляются:

СущностьОписание
UsersПользователи, зарегистрированные в этом realm.
RolesРоли (например, admin, user).
GroupsГруппы пользователей (например, customers, managers).
ClientsПриложения, которые используют Keycloak (frontend, api, mobile).
Identity ProvidersВнешние IdP (например, Google, LDAP, Facebook).
Authentication FlowsНастройки аутентификации (пароль, OTP, social login).

📊 5. Разница между Realm и Tenant

Некоторые путают realm и multi-tenancy.

ПараметрRealmMulti-Tenant
ИзолированностьПолнаяЧастичная
Доступ к даннымRealm’ы не могут видеть друг другаВ multi-tenant данные разделяются логически
SSO между клиентамиТолько внутри realmМожно между tenant’ами

Если вам нужно полное разделение пользователей и конфигурации, используйте отдельные realm’ы.


🔥 6. Итог

  • Realm — это изолированная область в Keycloak, содержащая пользователей, клиентов и настройки безопасности.
  • Keycloak поддерживает Master Realm (для админов) и Custom Realm (для приложений и компаний).
  • В одном Keycloak можно создать несколько realm’ов для разных приложений или организаций.
  • Пользователи из одного realm не могут авторизоваться в другом, если не настроен Cross-Realm Token Exchange.