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

Настройка OIDC-провайдеров (Spirit IAM)

Spirit IAM поддерживает интеграцию с кастомными провайдерами через протокол OIDC. Ниже приведена пошаговая инструкция по добавлению нового провайдера.

Предупреждение: При добавлении кастомного провайдера стандартный провайдер Keycloak отключается.

Как добавить кастомного OIDC-провайдера

  1. Создайте клиента в вашем OIDC-провайдере. Убедитесь, что клиент настроен с поддержкой OIDC, и получите следующие данные:

    • client_id
    • client_secret
    • issuer_url
    • Необходимые scope (например, openid, email, profile)
  2. Создайте маппер в формате Jsonnet. Разместите файл маппера в директории spirit/kratos на контрольном хосте.
    Маппер преобразует OIDC-claims в структуру профиля пользователя в Kratos.

    Пример маппера для Keycloak (oidc.keycloak.jsonnet):

    local claims = std.extVar('claims');
    if std.length(claims.sub) == 0 then
    error 'claim sub not set'
    else {
    identity: {
    traits: {
    email: claims.email,
    preferred_username: claims.preferred_username,
    given_name: if std.objectHas(claims, 'given_name') then claims.given_name else '',
    family_name: if std.objectHas(claims, 'family_name') then claims.family_name else '',
    name: if std.objectHas(claims, 'name') then claims.name else '',
    },
    },
    }
  3. Добавьте в вашем клане переменную sage_spirit_oidc_providers с настройками OIDC-провайдера. Подробнее о настройках можно узнать в документации ORY Kratos (selfservice.methods.oidc). В поле mapper_url необходимо указать file:///etc/config/kratos/{имя_файла_маппера}.

    Пример настройки для Keycloak:

    sage_spirit_oidc_providers:
    - id: keycloak
    label: "Keycloak"
    provider: generic
    client_id: "ID"
    client_secret: "SECRET"
    scope:
    - openid
    - email
    - profile
    issuer_url: "https://example.org/realms/sage"
    mapper_url: file:///etc/config/kratos/oidc.keycloak.jsonnet
  4. Выполните установку Sage. Если Sage уже установлен, необходимо запустить команду spirit_iam для обновления конфигурации.

Как добавить кастомные Web-хуки при входе/регистрации пользователя

Spirit IAM поддерживает интеграцию с кастомными Web-хуками при входе/регистрации пользователя. Ниже приведена пошаговая инструкция по добавлению новых Web-хуков.

  1. Создайте Jsonnet-маппер для тела запроса и разместите файл маппера в директории spirit/kratos на контрольном хосте (в качестве примера можно посмотреть внутренний маппер ansible/spirit_roles/iam_apps/files/spirit/kratos/config/login.webhook.jsonnet).

  2. Добавьте в клан переменную sage_spirit_login_webhooks и/или sage_spirit_registration_webhooks с настройками Web-хука. Подробнее о настройках можно узнать в документации ORY Kratos (selfservice.flows.registration.after.hooks).

    Пример настройки:

    sage_spirit_login_webhooks:
    - hook: web_hook
    config:
    url: https://example.org/user_login
    method: POST
    body: file:///etc/config/kratos/{имя_файла_маппера}
  3. Выполните установку Sage. Если Sage уже установлен, необходимо запустить команду spirit_iam для обновления конфигурации.

Как установить Sage и Spirit IAM на одном хосте

  1. Добавьте в клан переменную https_ports_override со следующим содержимым:

    https_ports_override:
    spirit_iam_apps: 9443
  2. Выполните установку Sage.