如何在springboot应用程序中从keycloak API获取JWT令牌

时间:2018-02-19 21:50:56

标签: spring-boot keycloak keycloak-services

我是Keycloak的新手。我开始使用它作为我的spring-boot应用程序的一部分。

我已经扩展了KeycloakWebSecurityConfigurerAdapter和覆盖的方法,如configure,configureGloabl等,以获得特定的身份验证(请参阅下面的代码片段。)

我想知道是否有可能访问JWT令牌对象以获取更多属性。此外,我不清楚如何在用户注销后使令牌无效。目前,一旦有一个用户登录,我就无法签署他,JWT令牌似乎一直在留下。

protected void configure(HttpSecurity http) throws Exception {
    super.configure(http);
    http.authorizeRequests()
        .antMatchers("/customers*")
        .hasRole("user")
        .anyRequest()
        .permitAll();
}

1 个答案:

答案 0 :(得分:1)

您可以使用此方法在邮递员中获取访问令牌;

enter image description here

此处 ConfigKeycloak 是领域名称, config-app 是客户端名称。

获取访问令牌的另一种方法是

case input.downcase
when 'why'
  # ...
end

您可以使用此方法从会话中注销。

 @RequestMapping(value = "/customers", method = RequestMethod.GET)
 @PreAuthorize("hasRole('ROLE_USER')")
 public String getCustomers(){
    KeycloakAuthenticationToken token = (KeycloakAuthenticationToken) request.getUserPrincipal();
    KeycloakPrincipal principal=(KeycloakPrincipal)token.getPrincipal();
    KeycloakSecurityContext session = principal.getKeycloakSecurityContext();
    AccessToken accessToken = session.getToken();
    String a = principal.getName();
    username = accessToken.getPreferredUsername();
    emailID = accessToken.getEmail();
    lastname = accessToken.getFamilyName();
    firstname = accessToken.getGivenName();
    realmName = accessToken.getIssuer();
    AccessToken.Access realmAccess = accessToken.getRealmAccess();
    }