Log*_*onJ 6 spring-mvc spring-security spring-boot keycloak keycloak-services
我能够使用以下方法获取用户名:
@Autowired
private HttpServletRequest request;
Principal user = request.getUserPrincipal();
mqMessage.setUserName(user.getName());
Run Code Online (Sandbox Code Playgroud)
但我想获得登录用户的名字和姓氏。我怎样才能得到 ff。userinfo 使用 SpringBoot keycloak 适配器?
Anu*_*nay 10
KeycloakAuthenticationToken token = (KeycloakAuthenticationToken) request.getUserPrincipal();
KeycloakPrincipal principal=(KeycloakPrincipal)token.getPrincipal();
KeycloakSecurityContext session = principal.getKeycloakSecurityContext();
AccessToken accessToken = session.getToken();
username = accessToken.getPreferredUsername();
emailID = accessToken.getEmail();
lastname = accessToken.getFamilyName();
firstname = accessToken.getGivenName();
realmName = accessToken.getIssuer();
Access realmAccess = accessToken.getRealmAccess();
roles = realmAccess.getRoles();
Run Code Online (Sandbox Code Playgroud)
您可以使用上面的代码片段来获取名字和姓氏 这是来自2.4.0
小智 6
使用 Keycloak 11 和 Spring 安全性实现
更多参考:https : //www.keycloak.org/docs/latest/securing_apps/#_spring_security_adapter
import java.security.Principal;
/** More imports */
@GetMapping("/userinfo")
public String userInfoController(Model model, Principal principal) {
KeycloakAuthenticationToken keycloakAuthenticationToken = (KeycloakAuthenticationToken) principal;
AccessToken accessToken = keycloakAuthenticationToken.getAccount().getKeycloakSecurityContext().getToken();
model.addAttribute("username", accessToken.getGivenName());
return "page";
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7867 次 |
| 最近记录: |