Tomcat 7에서 실행되는 Java 6 애플리케이션으로 Axis 웹 서비스를 만들었습니다. 보안을 위해 Spring Security 2.0.1 프레임 워크가 통합되었습니다.스프링 보안 : WSDL 문서가 인증을 요구하지 않음
보안상의 이유로 서비스 끝점은 기본 인증으로 보호되어야합니다. 그러나 WSDL 문서는 공개적으로 사용할 수 있어야합니다.
나는이 같은 봄 보안 구성을 만든:
<?xml version="1.0" encoding="UTF-8"?>
<beans:beans xmlns="http://www.springframework.org/schema/security"
xmlns:beans="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-2.0.1.xsd">
<http>
<intercept-url pattern="/services/InitechAuthenticationService*" access="ROLE_WSUSER" />
<intercept-url pattern="/services/InitechAuthenticationService?wsdl" filters="none" />
<http-basic />
</http>
<authentication-provider>
<user-service>
<user name="internal" password="${WS_USER_INTERNAL_PASSWORD}" authorities="ROLE_WSUSER" />
<user name="external" password="${WS_USER_EXTERNAL_PASSWORD}" authorities="ROLE_WSUSER" />
</user-service>
</authentication-provider>
</beans:beans>
문제는 관계없이 차단 - URL 행의 순서 라인의
<intercept-url pattern="/services/InitechAuthenticationService*" access="ROLE_WSUSER" />
항상 적용 할 것이다
및 라인
<intercept-url pattern="/services/InitechAuthenticationService?wsdl" filters="none" />
은 무시됩니다. 어떻게 든 행동을 제어 할 수있을 것으로 기대했을 것입니다. Spring Security가 가장 구체적인 규칙, 즉이 경우 끝에 "wsdl"을 가진 규칙을 선택하도록 순서를 지정함으로써 (Spring Security가 첫 번째 또는 마지막으로 일치하는 규칙을 선택하도록) 또는 규칙의 특수성에 의해 결정됩니다. WSDL 문서를 인증에서 제외 할 수 있습니까? 실제로 WS를 실제로 사용하기위한 인증을 사용 하시겠습니까?