ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Spring security - 4. 중복 로그인 로그아웃 시키기
    Spring Security/security 2023. 11. 17. 15:28
    728x90

    Spring security는 session을 관리 할 수 있어서, 같은 사용자가 들어왔을 때 기존에 로그인한 session 또는 마지막에 로그인한 session을 선택해서 로그아웃을 시킬 수 있다고 한다.


    * 코드 작성

     

    • httpSecurity에 sessionManagement 설정을 넣어주어야 한다.
    • sessionFixation에서 chageSessionId 설정을 하는데, 동일한 아이디로 계속 로그인을 해도 SessionId가 변경이 안된다고 하는 것 같다. SessionId가 변경이 안되고 고정되면 xss공격으로 SessionId를 탈취 할 수 있다고 한다. 그래서 cahgeSessionId설정을 통해 중복 로그인시 SessionId를 변경한다.

    • maximunSessions를 통해 Session의 최대 갯수를 설정한다
    • expiredSessionStrategy를 설정하여 session이 만료되면 어떻게 할 것인지 정 할 수 있다. 나는 다른 작업없이 로그인 화면으로 이동만 시키면 되니까 redirect설정만 했다.
    • sessionLogoutStrategy
    • maxSessionsPreventsLogin의 boolean 값으로 첫 session을 삭제하거나 마지막 session을 삭제할 수 있다고 한다. 나는 첫 session을 삭제시키기 위해 false로 설정
    • sessionRegistry를 bean으로 등록하여 하나의 Registry에 session정보를 저장 하도록 한다.

    * 코드 실행

    chrome 로그인화면
    chrome 로그인 성공
    edge 로그인화면
    둘다 로그인이 성공했다. 이 상황에서 edge를 새로고침 하면
    아무 이상이 없음, chrome을 새로고침하면?

     

    로그아웃이 풀리게 된다

     


    SecurityConfiguration

    저기를 들어가보니 

    SessionManagementConfigurer

    1장에서 본 ConcurrentSessionFilter와 관련이 있어보인다.

    해당 Filter는 중복 로그인에 관련된 Filter인데 내가 만든 설정을 저기안에 넣고 중복로그인시 실행시키도록 하는 것 같다.

     

    전부 SessionManagementConfigurer안에 있는거 보니, 이 클레스가 Session관리에 관한 총 책임자를 맡고있는 듯하다.

    728x90
    반응형
    LIST

    댓글

Designed by Tistory.