繁体   English   中英

如何使用 Spring Boot 在嵌入式 keycloak 中获取 KeycloakSession

[英]how to get KeycloakSession in embedded keycloak with spring boot

我正在开发一个在 Spring Boot 应用程序中运行嵌入式 keycloak 的项目(基于这篇文章: https ://www.baeldung.com/keycloak-embedded-in-spring-boot-app)。 我想访问 KeycloakSession 的某些用途,例如在 UserResource 是一个提供 rest API 以通过用户名获取用户信息的类我这样做:

@RequestMapping("/api/users")
@RestController
@Slf4j
@RequiredArgsConstructor
public class UserResource {

 private final KeycloakSession session;

 @Bean
 public KeycloakSession keycloakSession() {
     return new DefaultKeycloakSessionFactory().create();
 }
 
 @GetMapping("{username}")
 public Response getUserInfo(@PathVariable("username") String username) {
     RealmModel realm = session.getContext().getRealm();
     UserModel user = session.users().getUserByUsername(username, realm);

     // codes removed for brevity
 }
}

问题是当我调用上面的 rest 时,会话对象及其字段为空,所以我得到空指针异常。 我怎么解决这个问题?

我有完全不同的做事方式:我不混合资源和授权服务器。

我编写 Keycloak 映射器来丰富授权令牌(您可以在此处使用 Keycloak suer-session 找到这样的映射器)并基于那些“丰富的”JWT Keycloak 问题作为访问令牌来保护资源服务器。 您可能会在此处找到此类“用户”资源服务器的示例。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM