이노리
30
2021-01-26 12:46:15 작성 2021-01-26 12:46:38 수정됨
3
238

spring security redis 관련 문의입니다.


환경은 서버 1대에서

apache => tomcat으로 2개의 어플리케이션을 배포중입니다.

aaa.domain.com

bbb.domain.com

형태입니다. 위의 상황에서 클라이언트 유저가 어느한쪽이 로그인되면 다른쪽도 사이트를 들어갈 경우 로그인이 되게 하려고 합니다.

서브도메인이 다르기 때문에 아파치쪽의 로드밸런스를 이용한 세션 클러스터링은 불가능하다고 판단되어

redis를 이용하려고 합니다.

어플리케이션은 Spring + security 입니다.

aaa.domain.com 과 bbb.domain.com 의 어플리케이션에 redis를 적용하여 로그인시 FindByIndexNameSession가 들어가는 것을 확인하였습니다.


SessionID 값이 다르기 때문에 현재는 따로 각각 redis에 들어가는데 혹시 FindByIndexNameSession가 들어갔을때 양쪽다 필터를 적용하여 redis의 정보를 통해서 클리이언트가 로그인햇는지 여부를 확인할 수 잇는 방법이 있을까 해서 여쭈어봅니다.

대부분의 redis 글은 SessionID 값이 같아서 자동으로 연동되는데 현 상황은 그렇게 할수가 없어서 다른 방법이 있는지 여부를 찾아보고있습니다. ( 정안되면 로그인시 IP를 키로잡아 로그인 ID를 redis에 넣고 필터에서 해당 IP값이 있으면 뺴서 강제 로그인처리 )

혹시 방법이 있을까요??




0
  • 답변 3

  • Dierslair
    4k
    2021-01-26 13:45:08 작성 2021-01-26 13:45:21 수정됨

    세션 쿠키를 서브 도메인에서 공유할 수 있게 변경하시면 됩니다.

  • 이노리
    30
    2021-01-26 14:00:52

    세션 쿠키를 서브 도메인에서 공유할 수 있게 변경 이라는게 어떤 엑션인지 알수 있을까요??

    톰켓 쪽의 <Context sessionCookieDomain 을 사용할 경우 각도메인의 JSESSIONID가 주로 사용되고 sessionCookieDomain 으로 설정된 JSESSIONID 값은 어느한쪽이 리플레쉬할때마다 바꺼져서 제가 잘못알고 있는지 궁금하네요..

  • Dierslair
    4k
    2021-01-26 14:15:28

    이노리

    제가 잘못 짚은 걸수도 있는데 Spring Security Redis 가 아니라 Spring Session Redis 아닌가요? SpringSession 모듈을 사용하시는 경우 세션 쿠키는 CookieSerializer 에서 설정하시면 됩니다. SpringSession 은 서블릿 컨테이너의 getSession()을 오버라이딩하므로 톰캣 컨테이너의 세션 쿠키 설정을 건드리셔도 적용되는 건 없습니다.



  • 로그인을 하시면 답변을 등록할 수 있습니다.