向 Keycloaks 自定义用户存储添加角色

问题描述 投票:0回答:1

我已经在 Keycloak 的 JPA 中实现了这个 example 用于用户存储。 但我不知道如何向用户添加组和角色信息,以便它在 JWT 令牌中可见。我想它必须设置到这个 UserAdapter 或“UserEntity 实体”对象中。具体如何设置群组信息?

我尝试添加

  protected List<GroupModel> groups = new ArrayList<>();
  protected List<RoleModel> roles = new ArrayList<>();

到 UserAdapter 类,但它不会反映在 JWT 令牌内容中。

spring-data-jpa keycloak
1个回答
0
投票

这样做:

@Override
public UserModel getUserById(RealmModel realm, String id) {
  logger.info("getUserById: " + id);
  String persistenceId = StorageId.externalId(id);
  User user = userRepository.findByDn(persistenceId);
  if (Objects.isNull(user)) {
    logger.info("could not find user by id: " + id);
    return null;
  }
  UserAdapter ua = new UserAdapter(session, realm, model, user);
  RoleModel rol = realm.getRole("user");
  if (!ua.hasRole(rol)) {
     ua.grantRole(rol);
  }
  return ua;
}
© www.soinside.com 2019 - 2024. All rights reserved.