security의 annotation 설정 관련 문의드립니다.

246 views
Skip to first unread message

파란하늘

unread,
Dec 6, 2010, 11:48:04 AM12/6/10
to Korea Spring User Group
안녕하세요.

@mvc에 security annotation을 적용하면서 생긴 문제에 대해 문의드립니다.


상위 root applicationContext엔 *Service, *Dao 를, 하위 servletContext엔
*Controller를 설정하였습니다.
그리고 상위 Context에 Security관련 xml설정을 하였습니다.

이렇게 하는 경우 *Service 에서는 security annotation이 잘 동작하지만
Controller에서는 인식을 하지 않습니다.

proxy 적용시점이 각 Context마다 개별로 동작하게 되는 듯한데요.
이런 경우 올바른 설정은 어떻게 해야하는지요?

security관련 설정을 servlet쪽으로 내리면 filter생성시 빈객체를 찾지 못하게됩니다.
결국 security는 rootContext에 붙여야 할 것 같은데 사용은 하위 Controller에서 할 수 있는 방법이 궁금
합니다.

박용권

unread,
Dec 6, 2010, 8:06:17 PM12/6/10
to ks...@googlegroups.com
Controller 의 시큐리티는 애노테이션을 쓰는 경우보다는 다음과 같이 설정하는게 일반적이지 않을까요.

<http auto-config='true'>
    <intercept-url pattern="/login.jsp*" access="IS_AUTHENTICATED_ANONYMOUSLY"/>
    <intercept-url pattern="/**" access="ROLE_USER" />
    <form-login login-page='/login.jsp'/>
</http>

2010년 12월 7일 오전 1:48, 파란하늘 <luve...@hanmail.net>님의 말:

--
Google 그룹스 'Korea Spring User Group' 그룹에 가입했으므로 본 메일이 전송되었습니다.
이 그룹에 게시하려면 ks...@googlegroups.com(으)로 이메일을 보내세요.
그룹에서 탈퇴하려면 ksug+uns...@googlegroups.com로 이메일을 보내주세요.
더 많은 옵션을 보려면 http://groups.google.com/group/ksug?hl=ko에서 그룹을 방문하세요.


Sungchul Park

unread,
Dec 6, 2010, 9:18:58 PM12/6/10
to ks...@googlegroups.com

> 이렇게 하는 경우 *Service 에서는 security annotation이 잘 동작하지만
> Controller에서는 인식을 하지 않습니다.
>
> proxy 적용시점이 각 Context마다 개별로 동작하게 되는 듯한데요.
> 이런 경우 올바른 설정은 어떻게 해야하는지요?
>
예 맞습니다. 스프링 시큐리티의 메서드 보안 기능은 AOP를 사용하기 때문에
AOP의 특성이 그대로 따라옵니다. 즉, AOP 처리 범위가 해당 application
context로 제한됩니다.

> security관련 설정을 servlet쪽으로 내리면 filter생성시 빈객체를 찾지 못하게됩니다.
> 결국 security는 rootContext에 붙여야 할 것 같은데 사용은 하위 Controller에서 할 수 있는 방법이 궁금 합니다.
>

필터에서 찾는 Web Application Context는 Root application context인데 스
프링 보안이 설정된 application context는 Dispatcher Servlet에서 설정한
하부 application context이기 때문에 빈을 못 찾고 있습니다.

기존 처럼 root application context에 스프링 보안을 설정하시고 메서드 보
안을 적용하고 싶은 하부 application context에서 <global-method-security>
네임스페이스만 추가로 사용해보십시오. 잘 작동할 겁니다.


파란하늘

unread,
Dec 7, 2010, 12:16:14 AM12/7/10
to Korea Spring User Group
답글 감사드립니다.

박용권님의 말처럼 url path 단위로도 구성을 하는 방법도 있는데요.
board의 경우 list나 view와 write에 대한 권한을 따로 주어 특정 method단위로 권한을 부여하고 싶었습니다.

박성철 님이 알려주신 것처럼
Controller에 대한 mvc설정을 한 하위 Context에서
</sec:global-method-security> 설정을 해보니
아쉽게도 security aop는 정상 적용되지만 mvc annotation은 적용되지 않는 문제가 있었습니다.

JDK proxy의 문제인 듯하여 CGLIB proxy에 대한 설정 옵션을 활성화하니 제대로 동작하였습니다.
<sec:http auto-config="true" use-expressions="true">

많은 도움 주셔서 감사합니다. (__)

파란하늘

unread,
Dec 7, 2010, 12:17:52 AM12/7/10
to Korea Spring User Group
옵션을 잘못 메일 드렸네요;;
<sec:global-method-security proxy-target-class="true" secured-
annotations="enabled" jsr250-annotations="enabled" pre-post-
annotations="enabled">

proxy-target-class="true"

위 옵션을 추가하였습니다.;;

> > 네임스페이스만 추가로 사용해보십시오. 잘 작동할 겁니다.- 원본 텍스트 숨기기 -
>
> - 원본 텍스트 보기 -

Reply all
Reply to author
Forward
0 new messages