有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Spring安全Oauth2:在Tomcat中成功注销,但在Glashfish中无法注销

我只是春季安全Oauth2的初学者。 我有授权服务器和资源服务器(分开)。 我使用的流程是授权代码。我成功登录到授权服务器,获取代码,然后获取accessToken。 然后,我想注销时出现问题。当我在ApacheTomcat中部署授权服务器时,它可以调用'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) 个答案