[재질문] FilterSecurityInterceptor
- 작성자 :
- 최*혁
- 작성일 :
- 2010-12-17 13:51:43
- 조회수 :
- 2,888
- 구분 :
- 실행환경
- 진행상태 :
- 완료
Q
여기 비밀글로 등록이라는 기능은 없네요.
(첨부로 왠만한 파일을 등록을 하고 싶은데요.)
무한 루프는 다음과 같이 코멘트 처리를 해서 잡혔습니다.
(근데 첨부에서도 보시다시피 AbstractSecurityInterceptor는 아예 skip해 버리는 듯 합니다. authentication not attempted)
<b:bean id="filterSecurityInterceptor"
class="org.springframework.security.intercept.web.FilterSecurityInterceptor">
<!-- custom-filter before="FILTER_SECURITY_INTERCEPTOR" / -->
<b:property name="authenticationManager" ref="authenticationManager" />
<b:property name="accessDecisionManager" ref="accessDecisionManager" />
<b:property name="objectDefinitionSource" ref="databaseObjectDefinitionSource" />
</b:bean>
하지만 궁극적으로 원하는 'session timeout 시 (HttpSession) 자동으로 login page로 가기 기능'은 아직 안 잡혔는데요.
제가 등록해서 사용하는 role hierarchy는 다음과 같습니다.
parent child
ROLE_ANONYMOUS IS_AUTHENTICATED_ANONYMOUSLY
IS_AUTHENTICATED_ANONYMOUSLY IS_AUTHENTICATED_FULLY
IS_AUTHENTICATED_FULLY IS_AUTHENTICATED_REMEMBERED
IS_AUTHENTICATED_REMEMBERED ROLE_RESTRICTED
ROLE_RESTRICTED ROLE_USER
...생략...
그리고, anonymous 접근이 필요한 URL에는 ROLE_ANONYMOUS를 부여했구요.
(실은 IS_AUTHENTICATED_ANONYMOUSLY를 부여해도 결과는 마찬가지였습니다.)
그리고 이들을 제외한 모든 URL (/*.*, 혹시 여기에서 잘못인지) 에 ROLE_USER를 부여했구요.
그리고 role ordering 은 물론 ROLE_USER를 부여받은 URL을 제일 아래에 조회되도록 했습니다.
정상적으로 로그인 처리가 되는 걸로 봐서는 URL들과 ROLE 부여 등록은 어느 정도 맞는 게 아닌 가 싶습니다만.
하지만, Session이 사라진 이후에도 ROLE_ANONYMOUS에 등록된 URL이 아닌 URL에 접근을 시도하더라도 튕기지가 않네요.
(튕기지가 않구요 공통컴포넌트의 EgovUserDetailsHelper.getAuthenticatedUser()호출 결과 객체에 접근을 시도할 때 NullPointerException이 발생합니다.)
이를 구현하기 위해서...어떻게 해야 할까요.
따로 코딩이 들어가서 직접 구현을 해야 하는 건지요.
혹은 추가적으로 어떤 설정이 필요한 지 궁금합니다.
매번 답변 고맙습니다.
(첨부로 왠만한 파일을 등록을 하고 싶은데요.)
무한 루프는 다음과 같이 코멘트 처리를 해서 잡혔습니다.
(근데 첨부에서도 보시다시피 AbstractSecurityInterceptor는 아예 skip해 버리는 듯 합니다. authentication not attempted)
<b:bean id="filterSecurityInterceptor"
class="org.springframework.security.intercept.web.FilterSecurityInterceptor">
<!-- custom-filter before="FILTER_SECURITY_INTERCEPTOR" / -->
<b:property name="authenticationManager" ref="authenticationManager" />
<b:property name="accessDecisionManager" ref="accessDecisionManager" />
<b:property name="objectDefinitionSource" ref="databaseObjectDefinitionSource" />
</b:bean>
하지만 궁극적으로 원하는 'session timeout 시 (HttpSession) 자동으로 login page로 가기 기능'은 아직 안 잡혔는데요.
제가 등록해서 사용하는 role hierarchy는 다음과 같습니다.
parent child
ROLE_ANONYMOUS IS_AUTHENTICATED_ANONYMOUSLY
IS_AUTHENTICATED_ANONYMOUSLY IS_AUTHENTICATED_FULLY
IS_AUTHENTICATED_FULLY IS_AUTHENTICATED_REMEMBERED
IS_AUTHENTICATED_REMEMBERED ROLE_RESTRICTED
ROLE_RESTRICTED ROLE_USER
...생략...
그리고, anonymous 접근이 필요한 URL에는 ROLE_ANONYMOUS를 부여했구요.
(실은 IS_AUTHENTICATED_ANONYMOUSLY를 부여해도 결과는 마찬가지였습니다.)
그리고 이들을 제외한 모든 URL (/*.*, 혹시 여기에서 잘못인지) 에 ROLE_USER를 부여했구요.
그리고 role ordering 은 물론 ROLE_USER를 부여받은 URL을 제일 아래에 조회되도록 했습니다.
정상적으로 로그인 처리가 되는 걸로 봐서는 URL들과 ROLE 부여 등록은 어느 정도 맞는 게 아닌 가 싶습니다만.
하지만, Session이 사라진 이후에도 ROLE_ANONYMOUS에 등록된 URL이 아닌 URL에 접근을 시도하더라도 튕기지가 않네요.
(튕기지가 않구요 공통컴포넌트의 EgovUserDetailsHelper.getAuthenticatedUser()호출 결과 객체에 접근을 시도할 때 NullPointerException이 발생합니다.)
이를 구현하기 위해서...어떻게 해야 할까요.
따로 코딩이 들어가서 직접 구현을 해야 하는 건지요.
혹은 추가적으로 어떤 설정이 필요한 지 궁금합니다.
매번 답변 고맙습니다.
A
안녕하세요.. 최재혁님..
로그상에는 "/.*" 패턴이 먼저 처리가 되어서 발생된 것 같습니다.
secured_resources쪽에 order를 다시 한번 확인해 보시기 바랍니다.
또는 모든 패턴을 사용하시는 것 보다는 특정 패턴을 정의(prefix로 구분)하여 세부화하시는 방법도 있을 것 같습니다.
그럼.. 즐거운 하루되십시오.
감사합니다.
로그상에는 "/.*" 패턴이 먼저 처리가 되어서 발생된 것 같습니다.
secured_resources쪽에 order를 다시 한번 확인해 보시기 바랍니다.
또는 모든 패턴을 사용하시는 것 보다는 특정 패턴을 정의(prefix로 구분)하여 세부화하시는 방법도 있을 것 같습니다.
그럼.. 즐거운 하루되십시오.
감사합니다.