我已经在 Keycloak 的 JPA 中实现了这个 example 用于用户存储。 但我不知道如何向用户添加组和角色信息,以便它在 JWT 令牌中可见。我想它必须设置到这个 UserAdapter 或“UserEntity 实体”对象中。具体如何设置群组信息?
我尝试添加
protected List<GroupModel> groups = new ArrayList<>();
protected List<RoleModel> roles = new ArrayList<>();
到 UserAdapter 类,但它不会反映在 JWT 令牌内容中。
这样做:
@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;
}