2013-06-10 3 views
3

인증을 위해 미리 인증 된 토큰을 사용하는 RESTful 서비스가있는 경우가 있습니다. 내 자신의 preAuth 필터를 구현했습니다. 내 문제는 내 서비스에 전송 된 일부 요청에 내 애플리케이션이 아닌 BasicAuthorization이 포함되어 있다는 것입니다. (그들이하지 않았 으면 좋겠지 만, 그렇게하지 않아도됩니다.)스프링 보안 필터를 비활성화하는 방법

이제 스프링 시큐리티는 자동으로 BasicAuthorization 필터를 만들지 만,이 필터는 이러한 관련성이없는 인증 헤더 다음 오류를 던지는 :

Error 401 No AuthenticationProvider found for org.springframework.security.authentication.UsernamePasswordAuthenticationToken 

그래서 나는 봄 보안에 사용하지 않는 필터를 끄려면,하지만 난 방법을 알아낼 수 없습니다. 더미 필터를 만들고 자동 필터를 대체 할 수 있다는 것을 알고 있습니다. 또는 애플리케이션이 필터 체인에 들어가기 전에 모든 기본 Auth 헤더를 삭제할 수 있지만 해킹처럼 보입니다.

스프링 보안 필터 문서를 보면 the part that shows you how to add a FilterChainProxy이 발견되었지만 스프링 보안을 위해 모든 콩을 수동으로 만들어야하는 것처럼 보입니다. 특히 나는 당신이 AccessDecisionManager가 필요로하는 부분에있어,하지만 난 그게 내

<http use-expressions="true" create-session="stateless" 
     authentication-manager-ref="authenticationManager"> 

     <intercept-url pattern=[etc ...] 

재료가 무엇이며 생각 나는 아직도를 사용하고 싶습니다. 누구든지 어떤 제안이 있습니까?

+1

나머지 봄 보안 설정은 Siteminder 예제 설정과 비슷합니까? http://static.springsource.org/spring-security/site/docs/3.0.x/reference/preauth.html – samlewis

+0

사실, 나는 요소에 입력하면 필터를 먼저 호출하면됩니다. – samlewis

+0

@samlewis 사실 미리 호출되지 않는 사전 인증 필터의 문제는 아닙니다. 그것은 HttpBasicAuth 인증 헤더로 인증을 시도하지 않고 인증을 필요로하지 않는 메소드의 문제이며 예외를 throw하는 메소드에 대한 인증을 원하지 않는 경우에도 마찬가지입니다. 또 다른 해결책은 특정 요청을'security : none' (또는 그렇습니다)으로 설정 한 다음 기본 필터 앞에 순서대로 사전 인증 필터를 두는 것입니다. 나에게 해킹. – CorayThan

답변

1

잠시 동안 살펴 본 결과 불완전한 것으로 나타났습니다. 나는 REST 서비스 가이드와 함께 baeldung의 스프링 보안을 사용하고 있었다. 어리석게도 그것으로부터 <http-basic />을 포함시켰다. 그래서 ... 나쁜 질문에 대해 유감입니다.

관련 문제