我使用Keycloak在Spring Boot中保护了一个应用程序,并且试图获取当前用户的登录名。
按照这个问题的答案,我尝试了:
public Optional<String> getCurrentUserLogin() {
SecurityContext securityContext = SecurityContextHolder.getContext();
return Optional.ofNullable(securityContext.getAuthentication())
.map(authentication -> {
if (authentication.getPrincipal() instanceof KeycloakPrincipal) {
KeycloakPrincipal<KeycloakSecurityContext> kp = (KeycloakPrincipal<KeycloakSecurityContext>) authentication.getPrincipal();
return kp.getKeycloakSecurityContext().getIdToken().getPreferredUsername();
}
return null;
});
}
但没有运气。它向我发出有关未经检查的演员表的警告,并且不起作用!
如何让用户登录Keycloak?
KeycloakPrincipal
仅使用类,给出警告
原始使用参数化类“ KeycloakPrincipal”
但是有效!
[...]
if (authentication.getPrincipal() instanceof KeycloakPrincipal) {
KeycloakPrincipal principal = (KeycloakPrincipal) authentication.getPrincipal();
return principal.getName();
[...]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句