동시 세션 제어, 세션 고정 보호, 세션 정책

동시 세션 제어

동시 접속을 막기 위해

사용자1이 로그인함 -> 세션 생성
사용자2가 로그인함 -> 세션이 생성되면서 이전 세션 만료 설정

사용자1이 링크 접속함 -> 세션 만료 설정이 되어서 만료시킴.

가 왼쪽 그림

사용자1이 로그인함 -> 세션 생성
사용자2가 로그인함 -> 동일한 계정으로 이미 세션이 생성되어있음. -> 인증 실패

protected void configure(HttpSecurity http) throws Exception {     
http.sessionManagement()
	 .maximumSessions(1)             // 최대 허용 가능 세션 수 , -1 : 무제한 로그인 세션 허용
     .maxSessionsPreventsLogin(true) // 동시 로그인 차단함,  false : 기존 세션 만료(default)
     .invalidSessionUrl("/invalid")  // 세션이 유효하지 않을 때 이동 할 페이지
     .expiredUrl("/expired ")  	     // 세션이 만료된 경우 이동 할 페이지
}

세션 고정 보호

대충 세션을 통해서 사용자 쿠키값을 입력해 자동 로그인을 계속할 수 있음.
그러니, 인증할때마다 새로운 세션, 새로운 쿠키값으로 생성되어야함.

protected void configure(HttpSecurity http) throws Exception {
	http.sessionManagement()
                .sessionFixation().changeSessionId() // 기본값
				 // none, migrateSession, newSession
}

세션 정책

protected void configure(HttpSecurity http) throws Exception {
	http.sessionManagement()
       .sessionCreationPolicy(SessionCreationPolicy. If_Required )
}

SessionCreationPolicy.Always : 스프링 시큐리티가 항상 세션 생성
SessionCreationPolicy.If_Required : 스프링 시큐리티가 필요 시 생성(기본값)
SessionCreationPolicy.Never : 스프링 시큐리티가 생성하지 않지만 이미 존재하면 사용
SessionCreationPolicy.Stateless : 스프링 시큐리티가 생성하지 않고 존재해도 사용하지 않음

세션 제어 필터는 그냥 보고 넘어감

좋은 웹페이지 즐겨찾기