java - 在 springboot 中 Keycloak-admin-client 总是返回 null
问题描述
我在我的应用程序中使用 keycloak 管理客户端
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-admin-client</artifactId>
<version>${keycloak.version}</version>
</dependency>
在我的代码中,我有:
package br.com.fabioebner.api.serivce;
import lombok.extern.slf4j.Slf4j;
import org.keycloak.admin.client.Keycloak;
import org.keycloak.admin.client.KeycloakBuilder;
import org.keycloak.admin.client.resource.RealmResource;
import org.keycloak.representations.idm.ClientRepresentation;
import org.keycloak.representations.idm.RealmRepresentation;
import org.keycloak.representations.idm.UserRepresentation;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.event.EventListener;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Optional;
@Service
@Slf4j
public class KeycloakService {
private final RealmRepresentation realm;
private final Keycloak keycloak;
public KeycloakService() {
this.keycloak = Keycloak.getInstance(
"https://myIp/auth/",
"master",
"admin",
"password",
"admin-cli");
this.realm = keycloak.realm("myRealm").toRepresentation();
}
@EventListener(ApplicationReadyEvent.class)
public void addUser(){
List<UserRepresentation> users = realm.getUsers();
users.forEach(user -> {
log.debug(user.getUsername());
});
}
}
为什么realm.getUsers()
总是返回null?
如果我realm.getClients()
也将返回 null,但我的领域“myRealm”中有用户和客户端。
解决方案
问题是您正在从Realm
表示中获取用户
this.realm = keycloak.realm("myRealm").toRepresentation()
试图从中获取它们Realm
,即:
UsersResource usersResource = keycloak.realm("myRealm").users();
...
List<UserRepresentation> users = usersResource.list();
users.forEach(u -> System.out.println(u.getUsername()));
推荐阅读
- java - 我使用泛型完成了什么?
- c++11 - 将仅移动对象作为 r 值引用参数与无引用参数传递 - 有什么区别?
- angular - 如何上传照片(ng2-file-upload)Angular 无法读取未定义的属性“push”
- javascript - 为什么我必须为组件创建 index.js 文件?
- python - 将任意 Python 字符串与 Python 正则表达式匹配?
- ruby-on-rails - 带有 Geocoder gem 的 Rails where 子句
- ms-access - 多用途访问
- excel - 通过 vba 链接到单元格的数据矩阵条码挂起
- azure - 用于部署 vNet 的 ARM 模板失败
- flutter - 在颤动中为滑块使用离线图像