Начиная с версии 2.12.0 данные о пользователях и конфигурации, используемые Chat Server, хранятся в elph-keycloak (поставляется совместно с Elph Chat Server).

Для успешного проведения миграции убедитесь, что поле username для всех пользователей в Keycloak содержит только латинские символы (a–z, A–Z), цифры и допустимые спецсимволы (например, «.», «_», «-»). Учетные записи с именем пользователя, содержащим кириллицу или другие не латинские символы, не будут обработаны. Перед началом миграции необходимо привести все username к соответствующему формату.

При миграции система может пропускать пользователей, если в импортируемом наборе данных встречаются повторяющиеся email-адреса (email). Это стандартное поведение Keycloak, призванное обеспечить уникальность email в рамках одного realm.

Решение: Перед началом миграции включите настройку Duplicate emails в конфигурации realm Keycloak. Это разрешит создание нескольких учетных записей с одинаковым адресом электронной почты и позволит корректно импортировать всех пользователей.

Расположение настройки: Realm Settings -> Login -> Duplicate emails -> On.

Этап 1. Экспорт пользователей из Keycloak AuP

На хосте с AuP:

1) Скачайте архив с docker-образом export-users.tar.

2) Загрузите из архива docker-образ:

docker load -i export-users.tar

3) Создайте директорию export-users и перейдите в нее:

mkdir export-users && cd export-users

4) В директории export-users создайте 2 файла: .env и docker-compose.yml:

.env
KEYCLOAK_URL = 'https://my_aup_address' #Адрес AuP
KEYCLOAK_REALM = 'ecss' #Realm Keycloak AuP, по умолчанию ecss
KEYCLOAK_USER = 'admin' #Пользователь keycloak
KEYCLOAK_PASSWORD = 'some_passwd' #Пароль пользователя keycloak

KEYCLOAK_TOKEN_URL = '/auth/realms/master/protocol/openid-connect/token'
KEYCLOAK_CLIENT_ID = 'admin-cli'
OUTPUT_FILE = 'realm-users.json'
docker-compose.yml
version: '3.8'

services:
  export-users:
    image: export-users
    build: .
    container_name: export-users
    volumes:
      - ./data:/app/data
    environment:
      - PYTHONUNBUFFERED=1
    env_file:
      - .env
    restart: no

5) Запустите скрипт:

docker compose up

После завершения работы скрипта будет создан файл export-users/data/realm-users.json.

Этап 2. Импорт пользователей в Keycloak Chat

На хосте с Elph Chat:

1) Скачайте архив с docker-образом import-users.tar;

2) Загрузите из архива docker-образ:

docker load -i import-users.tar

3) Создайте директорию import-users и перейдите в нее:

mkdir import-users && cd import-users

4) В директории import-users создайте 2 файла: .env и docker-compose.yml:

.env
KEYCLOAK_URL="http://my_chat_server:8282" #Адрес и порт Keycloak Chat Server
KEYCLOAK_REALM = 'test_domain' #Realm Keycloak Chat Server
KEYCLOAK_USER = 'admin' #admin login
KEYCLOAK_PASSWORD = 'admin' #admin password

KEYCLOAK_CLIENT_ID='admin-cli'
INPUT_FILE='realm-users.json'
PASSWORDS_FILE='passwords.json'
PASSWORD_LENGTH='16'
RETRY='3'
docker-compose.yml
version: '3.8'

services:
  import-users:
    image: import-users
    build: .
    container_name: import-users
    env_file:
      - .env
    environment:
      - PYTHONUNBUFFERED=1
    volumes:
      - ./data:/app/data
    restart: no

5) Создайте директорию import-users/data/ и положите в нее экспортированный realm-users.json;

6) Перейдите в import-users и запустите скрипт:

docker compose up
  • Нет меток