Я работаю с Keycloak v4.8.3.
В настоящее время я пытаюсь реализовать UserStorageProvider со стратегией импорта. Я следую документации:
https://www.keycloak.org/docs/4.8/server_development/index.html#import-implementation-strategy
Это мой метод createAdapter:
protected UserModel createAdapter(RealmModel realm, String username) {
UserModel local = session.userLocalStorage().getUserByUsername(username, realm);
if (local == null) {
local = session.userLocalStorage().addUser(realm, username);
local.setFederationLink(model.getId());
local.setEnabled(true);
local.setFirstName("test");
local.setLastName("test");
}
return new UserModelDelegate(local) {
@Override
public void setUsername(String username) {
System.out.println(username);
super.setUsername(username);
}
@Override
public void setEmail(String email) {
System.out.println(email);
super.setEmail(email);
}
};
}
При входе в систему пользовательский адаптер создается и импортируется во внутреннюю базу данных keycloak. Когда я пытаюсь изменить адрес электронной почты на странице учетной записи, метод setEmail () никогда не вызывается. Keycloak просто обновляет внутреннюю базу данных.
Мне также нужно изменить адрес электронной почты во внешней системе. Как я могу синхронизировать внешнее хранилище?