如何捕获Spring Security身份验证令牌并将其保存在数据库中

时间:2016-04-04 15:09:29

标签: spring spring-mvc spring-security servlet-filters

我们正在使用双管齐下的方法进行用户身份验证,我们在群集环境中使用内存中身份验证令牌存储,并将令牌保存在共享数据库中。现在,我可以使用内存存储获取令牌并对用户进行身份验证。一切都按预期工作。

我正在寻找以下内容:

  1. 捕获令牌并将其保存在数据库中?如何使用Spring Security实现这一点(这应该在成功验证后发生)?
  2. 如果服务器重新启动,那么我仍然可以从数据库验证令牌。(如果用户名密码正确。)

    @Component 公共类CustomAuthSuccessHandler实现AuthenticationSuccessHandler {

    @Override
    public void onAuthenticationSuccess(HttpServletRequest request,
            HttpServletResponse response, Authentication authentication)
            throws IOException, ServletException {
        System.out.println(request);
        System.out.println(response);
    
    }
    

    }

  3. 以下是我的HTTP设置:

        @Override
        public void configure(HttpSecurity http) throws Exception {
    
            http.exceptionHandling()
                    .authenticationEntryPoint(customAuthenticationEntryPoint)
                    .and()
                    .logout()
                    .logoutUrl("/oauth/logout")
                    .logoutSuccessHandler(customLogoutSuccessHandler)
                    .and()
                    .csrf()
                    .requireCsrfProtectionMatcher(
                            new AntPathRequestMatcher("/oauth/authorize"))
                    .disable().headers().frameOptions().disable()
                    .sessionManagement()
                    .sessionCreationPolicy(SessionCreationPolicy.STATELESS)
                    .and().authorizeRequests().antMatchers("/hello/")
                    .permitAll().antMatchers("/secure/**").authenticated();
    
    
        }
    

    PS:看起来添加一个拦截器可能有所帮助,但是我不知道如何从响应中获取令牌。有什么建议吗?

0 个答案:

没有答案