스프링 시큐리티 권한 인증 오류 질문
- 작성자 :
- 이*성
- 작성일 :
- 2014-10-14 10:32:47
- 조회수 :
- 1,405
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
안녕 하세요!
전자 정부 프레임워크를 2.0에서 3.0으로 업그레이드 하면서 스프링 시큐리티도 같이 업그레이드 하였습니다.
현재 발생한 문제는 로그인을 하던지 안하던지 모든 페이지에 접근이 가능하다는 것이니다.
console 를 보면
2014-10-14 10:08:07,865 DEBUG [o.s.s.web.util.AntPathRequestMatcher] Checking match of request : '/epr/com/eprpbanncnvinq.do'; against '/egovbottom.do'
2014-10-14 10:08:07,865 DEBUG [o.s.s.web.util.AntPathRequestMatcher] Checking match of request : '/epr/com/eprpbanncnvinq.do'; against '/epr/com/eprpbanncnvinq.do'
2014-10-14 10:08:07,865 DEBUG [o.s.s.web.access.intercept.FilterSecurityInterceptor] Secure object: FilterInvocation: URL: /epr/com/eprPbannCnvInq.do; Attributes: [IS_AUTHENTICATED_ANONYMOUSLY, ROLE_ANONYMOUS]
2014-10-14 10:08:07,865 DEBUG [o.s.s.web.access.intercept.FilterSecurityInterceptor] Previously Authenticated: o.s.s.authentication.AnonymousAuthenticationToken@90541710: Principal: anonymousUser; Credentials: [PROTECTED]; Authenticated: true; Details: o.s.s.web.authentication.WebAuthenticationDetails@166c8: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: 0BDB250C188C07D81A697A5F0948A5EC; Granted Authorities: ROLE_ANONYMOUS
2014-10-14 10:08:07,865 DEBUG [o.s.s.access.vote.AffirmativeBased] Voter: o.s.s.access.vote.RoleVoter@4eeb54, returned: 1
2014-10-14 10:08:07,865 DEBUG [o.s.s.web.access.intercept.FilterSecurityInterceptor] Authorization successful
2014-10-14 10:08:07,865 DEBUG [o.s.s.web.access.intercept.FilterSecurityInterceptor] RunAsManager did not change Authentication object
2014-10-14 10:08:07,865 DEBUG [o.s.s.web.FilterChainProxy] /epr/com/eprPbannCnvInq.do at position 13 of 13 in additional filter chain; firing Filter: 'FilterSecurityInterceptor'
2014-10-14 10:08:07,865 DEBUG [o.s.s.web.FilterChainProxy] /epr/com/eprPbannCnvInq.do reached end of additional filter chain; proceeding with original chain
* 첫번째 질문 : 롤패턴과 동일한 url인 경우에만 로그인을 요구하는 거죠? 동일한 url이 없으면 로그인 없이 화면 보여지는 거고요?
* 두번째 질문 : 위 console 를 보면 로그인을 하지 않은 상태에서 /epr/com/eprpbanncnvinq.do 를 접근 했는데요. 그럼 로그이을 요청 해야 하는거 아닌가요? RoleVoter@4eeb54, returned: 1 뭐 이렇게 찍히더니 그냥 로그인 없이 화면에 나오네요!!!
* 세번째 질문 :
<beans:bean id="securedObjectService" class="egovframework.com.sec.security.securedobject.impl.SecuredObjectServiceImpl">
..
<beans:property name="requestMatcherType" value="regex"/> <!--default : ant -->
</beans:bean>
여기서
<beans:property name="requestMatcherType" value="regex"/> 를 넣으면 오류가 나거든요~ 이거 필요 없나요?
<http request-matcher="regex"> http에 regex 를 한게 있긴 한데요! 이것만 있으면 되는건가요?
많이 확인 했는데 해결이 쉽지가 않네요~
감사합니다. 수고하세요~
전자 정부 프레임워크를 2.0에서 3.0으로 업그레이드 하면서 스프링 시큐리티도 같이 업그레이드 하였습니다.
현재 발생한 문제는 로그인을 하던지 안하던지 모든 페이지에 접근이 가능하다는 것이니다.
console 를 보면
2014-10-14 10:08:07,865 DEBUG [o.s.s.web.util.AntPathRequestMatcher] Checking match of request : '/epr/com/eprpbanncnvinq.do'; against '/egovbottom.do'
2014-10-14 10:08:07,865 DEBUG [o.s.s.web.util.AntPathRequestMatcher] Checking match of request : '/epr/com/eprpbanncnvinq.do'; against '/epr/com/eprpbanncnvinq.do'
2014-10-14 10:08:07,865 DEBUG [o.s.s.web.access.intercept.FilterSecurityInterceptor] Secure object: FilterInvocation: URL: /epr/com/eprPbannCnvInq.do; Attributes: [IS_AUTHENTICATED_ANONYMOUSLY, ROLE_ANONYMOUS]
2014-10-14 10:08:07,865 DEBUG [o.s.s.web.access.intercept.FilterSecurityInterceptor] Previously Authenticated: o.s.s.authentication.AnonymousAuthenticationToken@90541710: Principal: anonymousUser; Credentials: [PROTECTED]; Authenticated: true; Details: o.s.s.web.authentication.WebAuthenticationDetails@166c8: RemoteIpAddress: 0:0:0:0:0:0:0:1; SessionId: 0BDB250C188C07D81A697A5F0948A5EC; Granted Authorities: ROLE_ANONYMOUS
2014-10-14 10:08:07,865 DEBUG [o.s.s.access.vote.AffirmativeBased] Voter: o.s.s.access.vote.RoleVoter@4eeb54, returned: 1
2014-10-14 10:08:07,865 DEBUG [o.s.s.web.access.intercept.FilterSecurityInterceptor] Authorization successful
2014-10-14 10:08:07,865 DEBUG [o.s.s.web.access.intercept.FilterSecurityInterceptor] RunAsManager did not change Authentication object
2014-10-14 10:08:07,865 DEBUG [o.s.s.web.FilterChainProxy] /epr/com/eprPbannCnvInq.do at position 13 of 13 in additional filter chain; firing Filter: 'FilterSecurityInterceptor'
2014-10-14 10:08:07,865 DEBUG [o.s.s.web.FilterChainProxy] /epr/com/eprPbannCnvInq.do reached end of additional filter chain; proceeding with original chain
* 첫번째 질문 : 롤패턴과 동일한 url인 경우에만 로그인을 요구하는 거죠? 동일한 url이 없으면 로그인 없이 화면 보여지는 거고요?
* 두번째 질문 : 위 console 를 보면 로그인을 하지 않은 상태에서 /epr/com/eprpbanncnvinq.do 를 접근 했는데요. 그럼 로그이을 요청 해야 하는거 아닌가요? RoleVoter@4eeb54, returned: 1 뭐 이렇게 찍히더니 그냥 로그인 없이 화면에 나오네요!!!
* 세번째 질문 :
<beans:bean id="securedObjectService" class="egovframework.com.sec.security.securedobject.impl.SecuredObjectServiceImpl">
..
<beans:property name="requestMatcherType" value="regex"/> <!--default : ant -->
</beans:bean>
여기서
<beans:property name="requestMatcherType" value="regex"/> 를 넣으면 오류가 나거든요~ 이거 필요 없나요?
<http request-matcher="regex"> http에 regex 를 한게 있긴 한데요! 이것만 있으면 되는건가요?
많이 확인 했는데 해결이 쉽지가 않네요~
감사합니다. 수고하세요~
A
안녕하세요. 이기성님.
다음과 같이 답변 드립니다.
* 첫번째 질문 : 정확하게 말씀드리면 등록된 role 패턴은 regex 또는 ant-style로 지정하기 때문에 해당 방식으로 매칭되는 URL에 대하여 통제가 됩니다. 그리고, 매칭되지 않는 URL은 통제되지 않기 때문에 로그인 없이 접근가능합니다.
* 두번재 질문 : /epr/com/eprpbanncnvinq.do URL에 대하여 IS_AUTHENTICATED_ANONYMOUSLY, ROLE_ANONYMOUS 이렇게 2가지 ROLE이 할당되어 있고 IS_AUTHENTICATED_ANONYMOUSLY가 있는 경우는 로그인 없이도 접근가능한 권한입니다.
즉, ROLE_ANONYMOUS가 아닌 ROLE_USER로 지정을 하셔야 해당 URL 접근 시 로그인되지 않으면 로그인 화면으로 이동합니다.
(IS_AUTHENTICATED_ANONYMOUSLY, ROLE_ANONYMOUS는 상속관계로 IS_*로 지정하는 것이 아니라 ROLE_*로 지정하셔야 합니다.)
* 세번쨰 질문
패턴 지정 방식이 변경되었기 때문에 <http ../> 부분에 지정하셔야 합니다.
그럼, 즐거운 하루되십시오.
감사합니다.
다음과 같이 답변 드립니다.
* 첫번째 질문 : 정확하게 말씀드리면 등록된 role 패턴은 regex 또는 ant-style로 지정하기 때문에 해당 방식으로 매칭되는 URL에 대하여 통제가 됩니다. 그리고, 매칭되지 않는 URL은 통제되지 않기 때문에 로그인 없이 접근가능합니다.
* 두번재 질문 : /epr/com/eprpbanncnvinq.do URL에 대하여 IS_AUTHENTICATED_ANONYMOUSLY, ROLE_ANONYMOUS 이렇게 2가지 ROLE이 할당되어 있고 IS_AUTHENTICATED_ANONYMOUSLY가 있는 경우는 로그인 없이도 접근가능한 권한입니다.
즉, ROLE_ANONYMOUS가 아닌 ROLE_USER로 지정을 하셔야 해당 URL 접근 시 로그인되지 않으면 로그인 화면으로 이동합니다.
(IS_AUTHENTICATED_ANONYMOUSLY, ROLE_ANONYMOUS는 상속관계로 IS_*로 지정하는 것이 아니라 ROLE_*로 지정하셔야 합니다.)
* 세번쨰 질문
패턴 지정 방식이 변경되었기 때문에 <http ../> 부분에 지정하셔야 합니다.
그럼, 즐거운 하루되십시오.
감사합니다.