2016-09-28 4 views
2

내 프로젝트에서 스프링 보안 및 Java 구성을 사용하고 있습니다.CSRF 토큰 만료 시간 초과를 지정할 수 있습니까?

스프링 보안을위한 Java 구성에는 기본적으로 csrf가 활성화되어 있습니다.

csrf 토큰이 만료 된 후 시간 초과를 설정할 수 있습니까? 이것은 토큰 기반 응용 프로그램에 대한 시간 초과를 지정하기위한 요구 사항이었습니다.

블로그 및 기사를 살펴본 후 csrf 토큰의 동작을 예측할 수 없으므로 보안이 강화됩니다.

다음은 스프링 보안을 구성하기위한 샘플 코드입니다.

@Override 
    protected void configure(HttpSecurity http) throws Exception { 
     http.sessionManagement().maximumSessions(1).expiredUrl("/login-expired.html").and().and() 
       .authorizeRequests().antMatchers("/superadmin/**").access("hasRole('ROLE_SUPER_ADMIN')").and() 
       .formLogin().loginPage("/signin.html").permitAll().failureUrl("/login-failed.html").permitAll() 
       .and().exceptionHandling().accessDeniedPage("/403").and().logout().permitAll().and() 
       .exceptionHandling().and().logout().logoutSuccessUrl("/logout.html").permitAll().and() 
    } 

많은 시간을 절약 할 수있는 제한 시간을 설정할 수있는 방법이 있다면.

답변

0

Spring Security Reference를 참조하십시오

한 가지 문제가 예상 CSRF 토큰이 너무 즉시의 HttpSession이 만료대로의 HttpSession에 저장되어 있다는 점이다를 A InvalidCsrfTokenException을 받게됩니다 AccessDeniedHandler을 구성. 의미

, 당신은 예를 WebLogic에 대한 참조 CSRF 토큰을 만료하기 위해 web.xml의 세션 시간 제한을 변경할 수 있습니다 :

<session-timeout>을 | 선택적 | 이 웹 응용 프로그램의 세션이 만료 된 후 분의 수는

또 다른 방법은 작성하는 것입니다 자신의 CsrfTokenRepository :

하는 API입니다 예상 된 CsrfTokenHttpServletRequest에 관련되는 방법을 변경 허용 . 예를 들어, HttpSession에 저장 될 수 있습니다.