Имеется возможность импортировать пользователей в Address Book из Keycloak. Для этого в файле address-book/stable/settings.override.yaml (используется для сопоставления данных при импорте), по аналогии с импортом из LDAP, AD, имеется свой раздел.

mappers:
  kk:
    first_name: ["firstName", "string"]
    last_name: ["lastName", "string"]
    middle_name: [["attributes", "middleName"], "string"]
    emails: ["email", ["email", "work"]]
    full_name: [["attributes", "fullName"], "string"]
    external_id: ["id", "string"]
    ldap_dn: [["attributes", "LDAP_ENTRY_DN"], "ldap_dn"]
    title: [["attributes", "title"], "string"]
    avatar: [["attributes", "avatarURL"], "url"]
    additional_info:
      example: [["attributes", "example"], "string"]
    phones:
      [
        [["attributes", "phoneNumber"], ["phone", "work"]]
      ]

Все атрибуты, кроме phones, записываются в следующем виде:

имя_поля_в_address_book : ["имя_атрибута_в_keycloak", "тип_атрибута"]
nickname : ["username", "string"]]

Импорт для атрибута phones работает аналогично описанному в разделе «Миграция данных из Active Directory» (единственное отличие — дополнительно указывается тип атрибута в Keycloak):

phones:
        [
          [["attributes", "default_phone"], ["phone", "pref"]],
          [["attributes", "work_phone"], ["phone", "work"]],
          [["attributes", "home_phone"], ["phone", "home"]]
        ]
      

Встроенные атрибуты пользователя Keycloak можно посмотреть по следующей ссылке.

Для организации импорта из Keycloak выполните указанные ниже шаги:

1. Отредактируйте файл settings.override.yaml:

nano address-book/stable/settings.override.yaml

Пример настройки .env.override для работы с Keycloak Elph Chat Server, начиная с версии 2.13.0, приведен в разделе «Настройка режима авторизации» блок BY_KEYCLOAK_JWT.

Заполните значения полей в соответствии с вашей инфраструктурой и соблюдая структуру YAML:

sources:  #Здесь задаются источники откуда брать данные
  keycloak:
    source: "example.com"
    base_ou: "Имя компании"

auto_update:
  keycloak:
    enabled: false
    timeout: 86400000


# ============================
# ОБЩИЕ НАСТРОЙКИ
# ============================

additional_import_settings:
  common:
    include_incompletely_filled_contacts: false # | true   - если выключена, при импорте будут отброшены все контакты, у которых отсутствуют обязательные поля

    full_name_parsing:
      enabled: false
      pattern: "LFM" # L - last_name, M - middle_name, F - first_name
      fallback_enabled: true # если не удалось распарсить - класть всё в fallback_field
      fallback_field: "middle_name" # middle_name | first_name | last_name; по умолчанию middle_name

  kk:
    ignore_data: [""]



sources: keycloak:

    source  — хост или доменное имя сервера keycloak;

    base_ou  — название базовой организационной единицы (OU — Organizational Unit) верхнего уровня;

auto_update: keycloak:

    enabled  — включить или отключить автоматическое обновление данных из keycloak;

    timeout — время автоматического обновления данных в миллисекундах.

2. Подключитесь к docker-контейнеру сервиса Address Book:

docker exec -it address-book-stable-server-1 bash

3. Подключитесь к Erlang node по имени:

./ecss_address_book remote --name ecss_address_book

4. Выполните команду для запуска миграции Keycloak и дождитесь завершения процесса:

EcssAddressBookCore.Actions.KkImport.import

Общее количество импортируемых контактов можно посмотреть с помощью команды:

EcssAddressBookDb.Actions.Contacts.count(%{})

Для выхода из iex нажмите Ctrl+C дважды. Затем введите exit.