EgovSSOLoginFilter에서 Session already invalidated오류
- 작성자 :
- 나*모
- 작성일 :
- 2015-04-08 14:24:43
- 조회수 :
- 3,738
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
안녕하십니까?
표준프레임워크 3.2에서 SSO처리를 하던 중 오류가 나서 문의 드립니다.
EgovSSOLoginFilter.java에서
chain.doFilter(request, response); 수행 후
isLocallyAuthenticated = (String) session.getAttribute("isLocallyAuthenticated");
이 라인에서 java.lang.IllegalStateException: getAttribute: Session already invalidated 오류가 납니다.
디버그 모드로 살펴보니 chain.doFilter를 하면 EgovSpringSecurityLoginFilter를 수행하게 되고
다시 springSecurity.doFilter를 호출 하는데 SpringSecurityFilter에서 세션을 invalid 시키고 다시 만들고 있습니다.
구글링을 해보니 session-fixation 공격을 막기 위해 로그인 시 세션을 다시 만든다고 하는 군요
여하간 doFilter에서 세션을 다시 만드니 기존 세션은 사용할 수 없어 오류가 나는 듯해서 doFilter이후에 세션을 다시 읽어 오도록
session = httpRequest.getSession();
코드를 넣으니 정상 작동 합니다.
질문은 이렇게 EgovSSOLoginFilter의 코드를 수정해서 사용해야 하는 건지 아니면 코드를 수정하지 않고 사용할 수 있는 다른 방법이 있는지에 대한 것입니다.
참조로 EgovSSOService를 구현하고 web.xml에서 sso filter를 사용하도록 변경한것 이외에는 별도 설정이나 소스 수정은 없습니다.
수고하십시오.
표준프레임워크 3.2에서 SSO처리를 하던 중 오류가 나서 문의 드립니다.
EgovSSOLoginFilter.java에서
chain.doFilter(request, response); 수행 후
isLocallyAuthenticated = (String) session.getAttribute("isLocallyAuthenticated");
이 라인에서 java.lang.IllegalStateException: getAttribute: Session already invalidated 오류가 납니다.
디버그 모드로 살펴보니 chain.doFilter를 하면 EgovSpringSecurityLoginFilter를 수행하게 되고
다시 springSecurity.doFilter를 호출 하는데 SpringSecurityFilter에서 세션을 invalid 시키고 다시 만들고 있습니다.
구글링을 해보니 session-fixation 공격을 막기 위해 로그인 시 세션을 다시 만든다고 하는 군요
여하간 doFilter에서 세션을 다시 만드니 기존 세션은 사용할 수 없어 오류가 나는 듯해서 doFilter이후에 세션을 다시 읽어 오도록
session = httpRequest.getSession();
코드를 넣으니 정상 작동 합니다.
질문은 이렇게 EgovSSOLoginFilter의 코드를 수정해서 사용해야 하는 건지 아니면 코드를 수정하지 않고 사용할 수 있는 다른 방법이 있는지에 대한 것입니다.
참조로 EgovSSOService를 구현하고 web.xml에서 sso filter를 사용하도록 변경한것 이외에는 별도 설정이나 소스 수정은 없습니다.
수고하십시오.
A
안녕하세요. 나상모님.
EgovSSOService 구현체 부분에서 정상 적으로 세션을 못만드는거 같습니다.
해당 위키를 참조하여 커스텀 마이징 하시면 될꺼 같습니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:com:v2:uat:sso%EC%97%B0%EA%B3%84_%EC%84%9C%EB%B9%84%EC%8A%A4
EgovSSOService 구현체 부분에서 정상 적으로 세션을 못만드는거 같습니다.
해당 위키를 참조하여 커스텀 마이징 하시면 될꺼 같습니다.
http://www.egovframe.go.kr/wiki/doku.php?id=egovframework:com:v2:uat:sso%EC%97%B0%EA%B3%84_%EC%84%9C%EB%B9%84%EC%8A%A4