스프링 시큐리티 적용시 문제가 있어요
- 작성자 :
- 윤*성
- 작성일 :
- 2014-03-05 15:46:31
- 조회수 :
- 941
- 구분 :
- 공통컴포넌트
- 진행상태 :
- 완료
Q
전자정부 2.7버전을 사용하고 있는데
스프링 시큐리티를 적용했을때 문제가 있는것 같습니다.
기본적으로 제공한 소스를 보면
EgovSpringSecurityLoginFilter 에서 처음에 시큐리티의 유저를 체크해서 있으면 패스를 하는데
만약 login페이지를 통해서 로그인 한후에
정상적인 로그아웃 절차를 통하지 않고 다시 로그인창으로 가서 로그인을 수행하면
getAuthenticatedUser을 통해서 가져오는 사용자는 이전 사용자정보를 가져오게 됩니다.
이 행위자체는 지극히 빈번하게 일어날수 있는 행위라고 생각합니다.
위와 같이 하였을 경우에
EgovSpringSecurityLoginFilter 의 doFilter에 있는
if(EgovUserDetailsHelper.getAuthenticatedUser() == null){
조건에 의해서 로그인의 스프링시큐리티의 일련의 과정을 패스하게 되지요.
그런데
EgovLoginController의 actionLogin을 타기때문에
세션에 있는 loginVO와 EgovUserDetailsHelper.getAuthenticatedUser() 로 가져오는 loginVO가
서로 다르게 되는 현상이 일어나게 됩니다.
login시에는 EgovUserDetailsHelper.getAuthenticatedUser()의 null여부와 상관없이
로그인 로직을 탈수 있도록 해야할 것 같은데 저는 우선
if(EgovUserDetailsHelper.getAuthenticatedUser() == null || requestURL.contains("/uat/uia/actionLogin")){
이렇게 수정하는 것으로 처리하였는데 다른 방법이 있다면 가이드해주셧으면 합니다.
스프링 시큐리티를 적용했을때 문제가 있는것 같습니다.
기본적으로 제공한 소스를 보면
EgovSpringSecurityLoginFilter 에서 처음에 시큐리티의 유저를 체크해서 있으면 패스를 하는데
만약 login페이지를 통해서 로그인 한후에
정상적인 로그아웃 절차를 통하지 않고 다시 로그인창으로 가서 로그인을 수행하면
getAuthenticatedUser을 통해서 가져오는 사용자는 이전 사용자정보를 가져오게 됩니다.
이 행위자체는 지극히 빈번하게 일어날수 있는 행위라고 생각합니다.
위와 같이 하였을 경우에
EgovSpringSecurityLoginFilter 의 doFilter에 있는
if(EgovUserDetailsHelper.getAuthenticatedUser() == null){
조건에 의해서 로그인의 스프링시큐리티의 일련의 과정을 패스하게 되지요.
그런데
EgovLoginController의 actionLogin을 타기때문에
세션에 있는 loginVO와 EgovUserDetailsHelper.getAuthenticatedUser() 로 가져오는 loginVO가
서로 다르게 되는 현상이 일어나게 됩니다.
login시에는 EgovUserDetailsHelper.getAuthenticatedUser()의 null여부와 상관없이
로그인 로직을 탈수 있도록 해야할 것 같은데 저는 우선
if(EgovUserDetailsHelper.getAuthenticatedUser() == null || requestURL.contains("/uat/uia/actionLogin")){
이렇게 수정하는 것으로 처리하였는데 다른 방법이 있다면 가이드해주셧으면 합니다.
A
안녕하세요. 윤태성님.
말씀하신 상황에서는 Spring Security 부분(해당 filter에 의해 처리)이 처리되지 않기 때문에 기존 로그인 정보가 살아 있게 됩니다.
이런 경우는 변경하신 방법으로 처리하시면 되실 것 같습니다.
해당 부분에 대해서는 검토를 통하여 다음 패치에 반영하도록 하겠습니다.
그럼, 즐거운 하루되십시오.
감사합니다.
말씀하신 상황에서는 Spring Security 부분(해당 filter에 의해 처리)이 처리되지 않기 때문에 기존 로그인 정보가 살아 있게 됩니다.
이런 경우는 변경하신 방법으로 처리하시면 되실 것 같습니다.
해당 부분에 대해서는 검토를 통하여 다음 패치에 반영하도록 하겠습니다.
그럼, 즐거운 하루되십시오.
감사합니다.