06. spring security 중복 로그인 방지 or 중복세션 제한하기
Written by niee on
-
spring security에서는 (내부 정책에 따라 다르겠지만)중복로그인 방지를 위한 방안을 마련해 두었다.
-
web.xml
에listener
등록 (이 부분은 지정을 해야한다는 예제가 많았는데 테스트 해보니 3.1.0.RELEASE 에서는 등록 하지 않아도 상관이 없었다 자세한 내막은 나도 모름)
<listener>
<listener-class>org.springframework.security.web.session.HttpSessionEventPublisher</listener-class>
</listener>
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"
속성을 지정하면 된다. -
session-management
의 속성에session-fixation-protection
이란 속성이 있는데 이 부분은 Session Fixation( 악성 사용자 가 사이트에 접속하여 세션 ID 를 획득 후 획득 한 세션 ID를 사용하여 다른 사용자가 사이트에 접속하도록 유도하여 다른 사용자가 해당 세션 ID로 사이트 접속시악성 사용자도 같은 세션으로 함께 로그인이 되는 방법 )을 이용한 악성 사용자를 막기 위해 security에서 매번 인증 요청시마다 session을 재생성 하는데 이를 제어하기 위한 속성이다. migrateSession
: 새 session 생성 후 기존의 session 값은 새 session에 복사해준다.(기본값)none
: 기존 session 유지newSession
: 새 session 생성 session은 복사하지 않음
이번 포스팅 부분은 자료가 많지 않아 정확한 내용은 모르겠다.
Comments