Spring Security Oauth2:在Tomcat中成功注销但无法在Glassfish中注销

时间:2014-12-10 22:13:56

标签: java spring spring-security spring-security-oauth2

我只是Spring Security Oauth2的初学者。 我有授权服务器和资源服务器(分开)。 我使用的流程是授权码。我成功登录授权服务器,获取代码,然后获取accessToken。 然后,当我想要注销时,我遇到了问题。当我在Apache Tomcat中部署Authorization Server时,它可以调用' j_spring_security_logout'但是当我在Glashfish中部署时,它不能。

这是我的安全配置:

protected void configure(HttpSecurity http) throws Exception {
    http.sessionManagement().maximumSessions(1).maxSessionsPreventsLogin(false);

    http.authorizeRequests().antMatchers(HttpMethod.OPTIONS, "/oauth/token").permitAll().and()
        .authorizeRequests()
            .antMatchers("/login.jsp").permitAll()
            .and()
            .formLogin()
                .loginPage("/login.jsp")
                .loginProcessingUrl("/j_spring_security_check")
                .usernameParameter("j_username")
                .passwordParameter("j_password")
            .and()
                .logout()
                .invalidateHttpSession(true)
                .deleteCookies("JSESSIONID")
                .logoutUrl("/j_spring_security_logout")
                .logoutSuccessHandler(logoutHandler);
}

这是我的logouthandler:

public void onLogoutSuccess(HttpServletRequest req, HttpServletResponse res, Authentication a) throws IOException, ServletException {
    String token=req.getParameter("token");
    if(token != null){
        consumerTokenServices.revokeToken(token);
    }
    String redirect = req.getParameter("redirect");
    if(redirect != null){
        res.sendRedirect(redirect);
    }
}

0 个答案:

没有答案