最近,我使用keycloak来保护我的api的某些端点。我想让其余部分保持不安全,因此可以同时登录用户和匿名用户访问它。但是我想获取登录用户的用户主体。我尝试获取Authorizarion标头以获取用户数据,但我认为这不是一个好方法。或者我应该在密钥斗篷上创建访客帐户并保护我的所有端点。
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-spring-boot-adapter</artifactId>
<version>${keycloak.version}</version>
</dependency>
我只是将keycloak适配器用于此模式
/api/v1/secure/*
。
但是,如果/api/v1/*
的授权标头存在,我想获取用户名。
我尝试
@RequestMapping("/api/v1/hello")
@ResponseBody
public String hello(Principal principal) {
return "hello " + principal.getName();
}
并抛出NullPointerException
,但是当我使用/api/v1/secure/hello
时可以使用。