0

我是 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();
}
4

1 回答 1

1

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

在此处输入图像描述

这里ConfigKeycloak是领域名称,而config-app是客户端名称。

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

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

您可以使用它从会话中注销。

  @RequestMapping(value = "/logout", method = RequestMethod.GET)
  public String logout(HttpServletRequest request) throws ServletException {
    request.logout();
    return "/";
  }
于 2018-08-03T12:23:59.503 回答