Отключение внешнего каталога с сохранением пользователей в Keycloak
При использовании интеграции с внешней SSO-системой невозможно использовать интеграцию с внешним каталогом. Следует отключить федерацию, но сохранить всех синхронизированных пользователей.
При обычном удалении федерации из realm, Keycloak удаляет всех синхронизированных пользователей, поэтому миграция должна проводиться собственными средствами.
Учетная запись синхронизированного пользователя в БД Keycloak содержит поле federationLink в таблице user_entity, которое указывает, что пользователь связан с внешним каталогом. В зависимости от поля federationLink в таблице user_entity Keycloak выполняет следующие операции:
- сверяет хеш с внешним каталогом;
- сверяет хеш с таблицей
credential(отсутствует для пользователей из каталога).
Начиная с релиза 3.4 в контейнер pgs_a``ristoteles компонента PGS добавлен скрипт migrate_from_catalogue_to_native_tenants.py. Скрипт следует запустить с сервера группы pythagoras, после установки компонента PGS. Порядок действий:
docker exec $(docker ps -qf name=pgs_aristoteles) python3 /opt/Pythagoras/Aristoteles/dev_utils/migrate_from_catalogue_to_native_tenants.py
Скрипт автоматически выполняет следующие операции для миграции:
- Очистить поле
federationLinkв таблицеuser_entity; - Проставить случайный пароль для пользователя, чтобы иметь возможность работать с его данными через имперсонацию;
- Сбросить кэш Keycloak.
После запуска скрипта необходимо проверить возможность работы в продукте для учетной записи пользователя.