Общее намерение заключается в управлении видимостью пользовательских данных при взаимодействии со сторонними сервисами.
Наше приложение использует единый вход (SSO). Следовательно, сторонние сервисы должны использовать Keycloak для аутентификации пользователей. Но мы хотели бы предоставить информацию о пользователе из нашего приложения, а не из Keycloak.
Например, у Стивена Кларка есть рабочий адрес электронной почты stephen.clark@jourrapide.com
и личный адрес электронной почты stephen.c@armyspy.com
. Он аутентифицируется с помощью Keycloak. После аутентификации сторонний сервис хотел бы запросить дополнительную информацию о Стивене. Мы хотели бы отправить информацию стороннему сервису на основе определенных пользовательских настроек. Например, если Стивен использует свой рабочий профиль, наше приложение должно отправить stephen.clark@jourrapide.com
по электронной почте стороннему сервису. Но stephen.c@armyspy.com
электронное письмо должно быть отправлено для личного профиля Стивена. То же самое должно быть сделано для других пользовательских данных.
Именно поэтому наше приложение должно получить контроль после аутентификации пользователя и отправить соответствующие данные пользователя сторонней службе.
Я предполагаю, что следующие варианты могут помочь нам достичь этой цели. Но мне не хватает информации для реализации. Было бы хорошо, если бы вы могли предоставить мне несколько вариантов с примерами реализации.
- Используйте «Поток входа в систему» в Keycloak.
- Создание собственного провайдера идентификации в Keycloak.
- Используйте функциональность Impersonate пользователя в Keycloak с REST API для переключения на нужного пользователя.