이상한 것,스프링 보안 Preauth "filters = none"이 작동하지 않습니다.
저는 siteminder와 함께 봄 보안을 사용하고 있습니다. 그러나 나는 보호되지 않는 하나의 URL을 원합니다 - 우리 loadBalancer는 앱 자체 내에 "healthCheck"URL이 필요합니다. 내가 로컬 (필터 제외) 다음 작품을 config (설정) 간단한 폼 기반 보안을 사용하여 실행하는 경우이 URL은 ..
를 SiteMinder에 의해 차단하지만, 봄 보안 어쨌든 그것은에 preauth을 적용 할 것 같다되지 않습니다
이 경우 인증 문제없이 localhost/myApp/resources/html/healthCheck.html을 탐색 할 수 있지만 다른 url은 로그인 양식을 표시합니다. 지금까지 모두 좋아 보인다!
그러나 나는 다음과 같은 설정을 사용하고있는 서버에 배포 할 때 :
<http auto-config="true" use-expressions="true">
<intercept-url pattern="/html/healthCheck.html" filters="none" />
<intercept-url pattern="/css/**" filters="none" />
<intercept-url pattern="/images/**" filters="none" />
<intercept-url pattern="/js/**" filters="none" />
<intercept-url pattern="/login" filters="none" />
<intercept-url pattern="/favicon.ico" filters="none" />
<intercept-url pattern="/*" access="hasAnyRole('ROLE_USER')" />
<custom-filter position="PRE_AUTH_FILTER" ref="siteminderFilter" />
</http>
나는 탐색 할 때 : 서버/MyApp를/자원/HTML/healthCheck.html 내가받을 다음과 같은 오류 :
을java.lang.IllegalArgumentException: Cannot pass null or empty values to constructor
org.springframework.security.core.userdetails.User.<init>(User.java:94)
com.myApp.security.SecuritySBSUserDetailsService.loadUserByUsername(SecuritySBSUserDetailsService.java:119)
org.springframework.security.core.userdetails.UserDetailsByNameServiceWrapper.loadUserDetails(UserDetailsByNameServiceWrapper.java:53)
나는 이것이 SM_USER없이 인스턴스화 된 UserDetailsService 때문에 발생한다고 생각합니다. 그러나 filters = none이 있습니다 .. 폼 인증을 사용할 때 작동합니다. 어떤 문제가 발생했는지, 아니면 더 나은 해결 방법이 무엇인지 생각해보십시오.
이 도움이된다면 내가 false로 exceptionIfHeaderMissing을 설정 한 예<beans:bean id="siteminderFilter" class="org.springframework.security.web.authentication.preauth.RequestHeaderAuthenticationFilter">
<beans:property name="principalRequestHeader" value="SM_USER" />
<beans:property name="exceptionIfHeaderMissing" value="false" />
<beans:property name="authenticationManager" ref="authenticationManager" />
</beans:bean>
는 ..
는
질문에있는 정보에서 일치하지 않는 경로를 사용하고있는 것처럼 보입니다. 버그가 있다는 증거는 없습니다. 많은 사람들이이 구조를 사용하기 때문에 이전에 그렇게 명백한 것이 발견되지 않았을 가능성은 거의 없습니다. –