security 인증 및 http, https 프로토콜 intercept 문제
- 작성자 :
- 신*정
- 작성일 :
- 2016-05-09 11:40:24
- 조회수 :
- 3,218
- 구분 :
- 개발환경
- 진행상태 :
- 완료
Q
안녕하세요?
전자정부 프레임웍 2.7버전 사용중입니다.
context-security 설정 중 다음과 같은 문제가 발생하여 문의 드립니다.
전자정부프레임워크 context-security.xml 설정을 다음과 같이 했습니다.
로그인 관련 부분에서 https프로토콜을 적용하고 처리 이후 페이지인 /admin/main.do에서는 http프로토콜을 적용하려고 하는데
http 프로토콜을 적용하면 세션 인증이 처리되지 않아(EgovUserDetailsHelper.getAuthorities()정보가 null) login-page="/portal/member/loginForward.do" 로 넘어갑니다.
<intercept-url pattern="/admin/main.do*" requires-channel="https"/> 와 같이 https 프로토콜을 사용하면 또 정상 인증되면서 다음 페이지로 잘 넘어갑니다. 무엇을 어떻게 확인해야 될까요?
<intercept-url pattern="/admin/login.do*" requires-channel="https"/>
<intercept-url pattern="/admin/loginAction.do*" requires-channel="https"/>
<intercept-url pattern="/defaultTarget.do*" requires-channel="https" />
<intercept-url pattern="/j_spring_security_check*" requires-channel="https" />
<intercept-url pattern="/admin/main.do*" requires-channel="http"/>
<port-mappings>
<port-mapping http="80" https="443"/>
</port-mappings>
<form-login login-processing-url="/j_spring_security_check.do"
authentication-failure-url="/admin/login.do"
default-target-url="/defaultTarget.do"
always-use-default-target="true"
login-page="/portal/member/loginForward.do" />
전자정부 프레임웍 2.7버전 사용중입니다.
context-security 설정 중 다음과 같은 문제가 발생하여 문의 드립니다.
전자정부프레임워크 context-security.xml 설정을 다음과 같이 했습니다.
로그인 관련 부분에서 https프로토콜을 적용하고 처리 이후 페이지인 /admin/main.do에서는 http프로토콜을 적용하려고 하는데
http 프로토콜을 적용하면 세션 인증이 처리되지 않아(EgovUserDetailsHelper.getAuthorities()정보가 null) login-page="/portal/member/loginForward.do" 로 넘어갑니다.
<intercept-url pattern="/admin/main.do*" requires-channel="https"/> 와 같이 https 프로토콜을 사용하면 또 정상 인증되면서 다음 페이지로 잘 넘어갑니다. 무엇을 어떻게 확인해야 될까요?
<intercept-url pattern="/admin/login.do*" requires-channel="https"/>
<intercept-url pattern="/admin/loginAction.do*" requires-channel="https"/>
<intercept-url pattern="/defaultTarget.do*" requires-channel="https" />
<intercept-url pattern="/j_spring_security_check*" requires-channel="https" />
<intercept-url pattern="/admin/main.do*" requires-channel="http"/>
<port-mappings>
<port-mapping http="80" https="443"/>
</port-mappings>
<form-login login-processing-url="/j_spring_security_check.do"
authentication-failure-url="/admin/login.do"
default-target-url="/defaultTarget.do"
always-use-default-target="true"
login-page="/portal/member/loginForward.do" />
A
안녕하세요. 표준프레임워크 센터입니다.
올려주신 설정만으로는 정확히 확인하기 어렵지만 일반적으로 SSL적용시 사이트 전체를 암호화 하지 않고 로그인 관련 부분만 적용할 경우, HTTPS 포트에서 로그인 후 HTTP 포트로 이동하면서 시큐리티에서 인증된 세션이 끊어져 로그인페이지로 리다이렉트 되는 현상이 있는데 그와 같은 현상인 것 같습니다.
크게 두가지 해결방법이 있는데 첫째는 session-fixation-protection 속성 값을 "none"으로 설정하는 것입니다. 기본적으로 시큐리티에서는 Session Fixation Attack 방지를 위해 사용자가 로그인할 때마다 새로운 세션을 생성하고 기존세션 값들을 복사하는데 이 설정을 "none"으로 설정하여 새로운 세션을 생성하는 것을 막는 방법입니다.
ex> <session-management session-fixation-protection="none" />
둘째는 인증 성공시 인증쿠키를 재생성하여 전달하는 방법입니다.
login success handler를 별도로 커스터마이징 하고 등록하여, 인증 성공시 인증 쿠키를 재생성 하는 방법입니다.
세부적인 내용은 하단의 외부링크를 참조해보시기 바랍니다.
http://stackoverflow.com/questions/9004878/spring-security-3-1-0-cannot-switch-from-https-to-http
http://m.blog.naver.com/wizardkyn/220652476826
http://www.baeldung.com/spring-channel-security-https
http://docs.spring.io/spring-security/site/docs/2.0.x/reference/html/appendix-namespace.html#session-fixation-protection
감사합니다.
올려주신 설정만으로는 정확히 확인하기 어렵지만 일반적으로 SSL적용시 사이트 전체를 암호화 하지 않고 로그인 관련 부분만 적용할 경우, HTTPS 포트에서 로그인 후 HTTP 포트로 이동하면서 시큐리티에서 인증된 세션이 끊어져 로그인페이지로 리다이렉트 되는 현상이 있는데 그와 같은 현상인 것 같습니다.
크게 두가지 해결방법이 있는데 첫째는 session-fixation-protection 속성 값을 "none"으로 설정하는 것입니다. 기본적으로 시큐리티에서는 Session Fixation Attack 방지를 위해 사용자가 로그인할 때마다 새로운 세션을 생성하고 기존세션 값들을 복사하는데 이 설정을 "none"으로 설정하여 새로운 세션을 생성하는 것을 막는 방법입니다.
ex> <session-management session-fixation-protection="none" />
둘째는 인증 성공시 인증쿠키를 재생성하여 전달하는 방법입니다.
login success handler를 별도로 커스터마이징 하고 등록하여, 인증 성공시 인증 쿠키를 재생성 하는 방법입니다.
세부적인 내용은 하단의 외부링크를 참조해보시기 바랍니다.
http://stackoverflow.com/questions/9004878/spring-security-3-1-0-cannot-switch-from-https-to-http
http://m.blog.naver.com/wizardkyn/220652476826
http://www.baeldung.com/spring-channel-security-https
http://docs.spring.io/spring-security/site/docs/2.0.x/reference/html/appendix-namespace.html#session-fixation-protection
감사합니다.