Перейти к основному содержимому
Версия: 1.12

Настройка вебхуков при входе и регистрации пользователя

Вебхуки используются для исходящей интеграции Spirit IAM с внешними системами — например:

  • системами мониторинга безопасности (SIEM);
  • системами инцидент-менеджмента;
  • корпоративными системами управления доступом.

С их помощью Spirit IAM уведомляет внешние системы о событиях входа и регистрации пользователя, а также передает сведения о ролях и полномочиях, полученные от вышестоящего OIDC-провайдера в токене при аутентификации. Такой механизм применяется, например, когда внешняя система синхронизирует свою ролевую модель с ролевой моделью Spirit IAM: получает данные о ролях пользователя и на их основе может назначить ему соответствующие полномочия в Spirit IAM.

Важно

В тело вебхука попадают только сведения, полученные от OIDC-провайдера в токене при входе. Роли и полномочия, назначенные пользователю внутри Spirit IAM, в тело вебхука не включаются.

Чтобы передавать данные во внешние системы, выполните следующие шаги:

  1. Создайте Jsonnet-маппер для тела запроса.
  2. Опишите настройки вебхуков в переменных конфигурации.
  3. Примените конфигурацию.

Шаг 1. Создание Jsonnet-маппера​

Создайте Jsonnet-маппер для тела запроса и разместите файл в директории spirit/kratos внутри контейнера установщика на контрольном хосте. Маппер формирует JSON-тело POST-запроса, которое Spirit IAM отправляет на указанный url.

Пример маппера, демонстрирующий синтаксис Jsonnet:

local webhook = std.extVar('webhook');

{
event: webhook.event, // тип события: login или registration
user_id: webhook.identity.id, // идентификатор пользователя в Kratos
email: webhook.identity.traits.email, // адрес электронной почты из профиля
created_at: webhook.identity.created_at, // время создания пользователя
}

Для сравнения можно посмотреть внутренний маппер ansible/horde_roles/ansible_role_spirit/files/spirit/kratos/config/login.webhook.jsonnet.

Шаг 2. Определение переменных​

В конфигурационном файле определите переменные с настройками вебхуков:

  • sage_spirit_login_webhooks — при входе пользователя;
  • sage_spirit_registration_webhooks — при регистрации.

Подробнее о настройках см. в документации ORY Kratos (selfservice.flows.registration.after.hooks).

Пример настройки вебхука на вход (sage_spirit_login_webhooks):

sage_spirit_login_webhooks:
- hook: web_hook # тип хука
config:
url: https://example.org/user_login # адрес, куда отправляется запрос
method: POST # метод запроса
body: file:///etc/config/kratos/{имя_файла_маппера} # путь до маппера тела запроса
Примечание

Переменная sage_spirit_login_webhooks отправляет запрос при входе пользователя, sage_spirit_registration_webhooks — при регистрации. Можно настроить обе переменные или только одну из них в зависимости от сценария.

Шаг 3. Применение конфигурации​

Чтобы применить изменения к компонентам Spirit IAM, запустите плейбук установки в режиме update с тегом spirit_iam:

export SAGE_DEPLOY_MODE=update
ansible-playbook sage-setup.yml --tags spirit_iam

Проверьте, что при входе или регистрации пользователя вебхук отправляет запрос на указанный url.