2012-03-21 6 views
2

스프링 보안이 적용된 웹 응용 프로그램이 있고 기본적으로 모든 페이지에 권한이 필요합니다. 내 시나리오에서 관리자는 어떤 시점에서 일부 페이지의 보안을 비활성화하거나 완전히 비활성화 할 수 있습니다. 이것이 어떻게 최고가 될 수 있습니까? FilterChainProxy 수정에 대해 생각하고 있었지만 정확하게 (getFilterChains()이 수정 불가능한 목록을 반환하는) 방법이 명확하지 않습니다.프로그래밍 방식으로 스프링 보안 비활성화

+0

시작하려면 로그인 페이지 (일반적으로 그렇지 않은)를 포함하여 * 모든 것 *이 보호 된 것처럼 보이기 때문에 구성이 비정상적으로 보입니다. 관리자가 페이지의 보안을 비활성화 할 수있는 시나리오에 대해 자세히 설명해 주시겠습니까? 동시에 드물고 재미있는 것 같습니다. –

+0

http-basic을 사용하므로 기본 브라우저 인증 대화 상자가 사용됩니다. 응용 프로그램은 db 검색/탐색/서버의 일종이며 모든 것이 기본적으로 보호되어 있으므로 관리자가 노출을 필요로하거나 결정할 수 있습니다 (예 : 응용 프로그램과 통신해야하지만 인증을 지원하지 않는 타사 응용 프로그램 때문에) . – kpentchev

답변

3

서브 클래스 DelgatingFilterProxy에서 살펴보고 대리자를 호출 여부를 플래그를 확인합니다.

springSecurityFilterChain (이름 공간 구성을 사용한다고 가정)에 사용되는 DelegatingFilterProxy 대신 web.xml에서 사용하십시오. 예를 들면 : 당신의 DelegatingFilterProxy에서

<filter> 
    <filter-name>springSecurityFilterChain</filter-name> 
    <filter-class>com.foo.spring.MyDelegatingFilterProxy</filter-class> 
</filter> 

은 위임 또는하지 말아야하는지 (예를 들어, 시스템 속성) 플래그를 확인합니다.

class MyDelegatingFilterProxy extends DelegatingFilterProxy { 

    override def doFilter(request: ServletRequest, response: ServletResponse, chain: FilterChain) { 

    if (System.getProperty("skipSpringSecurity" != null) { 
     // Ignore the DelegatingProxyFilter delegate 
     chain.doFilter(request, response) 
    } else { 
     // Call the delegate 
     super.doFilter(request, response, chain) 
    } 
    } 
} 

당신은 (등 정적 파일) <security:intercept-url pattern="/**" access="ROLE_USER" /> 같은 담요 와일드 카드를 사용하고/아래 경로의 일부 세트의 봄 보안 필터를 호출 건너 뛸 같은 기술을 사용할 수 있습니다.

+0

고마워,이게 내가 찾고 있던 것이고 위대한 작품이다! – kpentchev

0

스프링 보안은 어떻게 구성됩니까? 조건을 확인하는 사용자 정의 permissionEvaluator를 추가하도록 선택할 수 있습니까?

spring-security writing a custom PermissionEvaluator - how to inject a DAO service?

+0

나는 일부 특정 유권자와의 AuthenticationProvider을 가지고 있지만, 그렇지 않은 경우는 기본 웹 응용 프로그램의 설정'<보안 사용 : HTTP 자동 구성 \t \t 인증 관리자-REF = "AuthenticationManager에"= '진정한' \t \t 액세스 의사 결정 관리자 -ref = "repositoryAccessDecisionManager" \t \t accessdenied 페이지 => "/ accessdenied" \t \t \t \t <보안 : 차단 - URL 패턴 = "/ **"액세스 = "ROLE_USER"/> \t \t < 보안 : http-basic /> \t' – kpentchev

관련 문제