Spring Boot中获取Keycloak的AccessToken

2024-02-04

我在 Spring Boot 应用程序中使用 Keycloak 进行授权管理,我从以下curl命令中获取访问令牌:

curl \
 -d "client_id=admin-cli" \
 -d "username=user" \
 -d "password=password" \
 -d "grant_type=password" \
 "http://localhost:8180/auth/realms/SpringBootKeycloak/protocol/openid-connect/token"

现在我想在我的控制器中获取这个accessToken,我尝试了这个example https://www.n-k.de/2016/05/how-to-get-accesstoken-from-keycloak-springboot-javaee.html但它似乎不起作用,它显示此错误 :

org.keycloak.adapters.springsecurity.token.KeycloakAuthenticationToken cannot be cast to org.keycloak.KeycloakPrincipal

你可以尝试下面的代码

        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();

我在用2.4.0.最终版

这与示例相同,您可以分享您的作品以了解您的位有什么问题

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot中获取Keycloak的AccessToken 的相关文章

随机推荐