首页 > 解决方案 > 如何使用 Keycloak UserRegistrationProvider 获取名字/姓氏?

问题描述

我正在寻找任何方法来使用用户存储提供程序在 keyclock 上获取新的自注册用户的名字或姓氏?

就我而言,我正在使用 Keycloak 12 和一个旧的 MySQL 数据库,我必须在其中存储所有用户。

在我的 SPI 中实现 UserRegistrationProvider.addUser(RealmModel realm, String username) 和 CredentialInputUpdater.updateCredential(RealmModel realm, UserModel user, CredentialInput input) 允许我捕获用户名和密码......但我无法获得任何其他基本信息,例如名字/姓氏?

这是我的两个 CredentialInputUpdater 和 UserRegistrationProvider 实现:

@Override
public UserModel addUser(final RealmModel realmModel, final String username) {

  Integer id = userRepository.createUser(username, "password");

  User user = null;
  if (id != null) {
    user = new User(id.toString(), username, "firstName", "userName", "password");
  }

  return user != null ? new UserAdapter(session, realmModel, model, user) : null;
}

@Override
public boolean updateCredential(RealmModel realm, UserModel user, CredentialInput input) {

  if (!supportsCredentialType(input.getType()) || !(input instanceof UserCredentialModel)) {
    return false;
  }
  UserCredentialModel cred = (UserCredentialModel) input;
    return userRepository.updateCredentials(user.getUsername(), cred.getChallengeResponse());
}

关于如何获取这两个数据的任何想法?

标签: keycloak

解决方案


推荐阅读