मैंने जावा 6 एप्लिकेशन को टॉमकैट 7 पर चल रहे जावा 6 एप्लिकेशन के रूप में बनाया है। सुरक्षा के लिए वसंत सुरक्षा 2.0.1 ढांचा एकीकृत है।वसंत सुरक्षा: प्रमाणीकरण की आवश्यकता से डब्लूएसडीएल दस्तावेज़ को छोड़कर
सुरक्षा उद्देश्यों के लिए सेवा समापन बिंदु मूल प्रमाणीकरण के साथ संरक्षित किया जाना चाहिए। हालांकि, डब्लूएसडीएल दस्तावेज़ सार्वजनिक रूप से उपलब्ध होना चाहिए।
मैं इस तरह एक स्प्रिंग सुरक्षा विन्यास बनाया है:
<?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>
समस्या यह है कि अवरोधन-यूआरएल लाइनों के आदेश, लाइन की परवाह किए बिना
<intercept-url pattern="/services/InitechAuthenticationService*" access="ROLE_WSUSER" />
हमेशा लागू किया जा रहा है है और लाइन
<intercept-url pattern="/services/InitechAuthenticationService?wsdl" filters="none" />
अनदेखा किया गया है। मुझे उम्मीद थी कि कोई भी व्यवहार को किसी भी तरह नियंत्रित कर सकता है, उदा। आदेश को specfiying द्वारा (ताकि वसंत सुरक्षा या तो पहले या अंतिम मिलान नियम का चयन करता है) या नियमों की विशिष्टता के द्वारा ताकि वसंत सुरक्षा सबसे विशिष्ट नियम का चयन करे, यानी इस मामले में अंत में "wsdl" वाला एक। मैं WSDL दस्तावेज़ को प्रमाणीकृत होने से कैसे बाहर कर सकता हूं, साथ ही वास्तव में डब्ल्यूएस का उपयोग करने के लिए प्रमाणीकरण को सक्षम कर सकता हूं?