본문 바로가기
개발 Story/spring-security

06. spring security 중복 로그인 방지 or 중복세션 제한하기

by niee 2015. 9. 9.
반응형

spring security에서는 (내부 정책에 따라 다르겠지만)중복로그인 방지를 위한 방안을 마련해 두었다.

 

1.web.xml에 listener등록 (이 부분은 지정을 해야한다는 예제가 많았는데 테스트 해보니 3.1.0.RELEASE 에서는 등록 하지 않아도 상관이 없었다 자세한 내막은 나도 모름)

 
<listener>
    <listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener> 

 

2.security-context.xml에 세션 제한 지정

<http>에

 
<session-management invalid-session-url="/user/loginPage">
 <concurrency-control max-sessions="1" expired-url="/user/loginPage"/>
</session-management> 

 

invalid-session-url​ : 세션이 끊겼을때 이동 할 페이지

max-sessions="1" : 최대 허용 가능 세션 수

expired-url="/user/loginPage" :  중복 로그인이 일어났을 경우 이동 할 주소

(이때 중복 로그인이 일어날 경우 처음 로그인한 사용자는 접속이 끊기고 다음 request시 expired-url​에 지정한 주소로 이동된다. (invalid-session-url​이 있을경우 invalid-session-url​로 이동))

 

만약 두번째 인증을 거부하게 하고 싶은 경우 

concurrency-control에​ error-if-maximum-exceeded="true"속성을 지정하면 된다.

 

 

3.session-management​의 속성에 session-fixation-protection이란 속성이 있는데

이 부분은 ​Session Fixation( 악성 사용자 가 사이트에 접속하여 세션 ID 를 획득 후 획득 한 세션 ID를 사용하여 다른 사용자가 사이트에 접속하도록 유도하여 다른 사용자가 해당 세션 ID로 사이트 접속시악성 사용자도 같은 세션으로 함께 로그인이 되는 방법 )을 이용한 악성 사용자를 막기 위해 security에서 매번 인증 요청시마다 session을 재생성 하는데 이를 제어하기 위한 속성이다.

 

migrateSession - 새 session 생성 후 기존의 session 값은 새 session에 복사해준다.(기본값)

none - 기존 session 유지

newSession - 새 session​ 생성 session은 복사하지 않음

 

이번 포스팅 부분은 자료가 많지 않아 정확한 내용은 모르겠다.

 

 소스확인 : https://github.com/ParkMinKyu/security

반응형