मैंने कुछ ट्यूटोरियल्स के मैश अप का पालन किया है और न ही सफलतापूर्वक!अपाचे सीएक्सएफ और डब्ल्यूएस-सिक्योरिटी - पासवर्ड कॉलबैक
मैं अपने स्प्रिंग सुरक्षा प्रमाणीकरणकर्ता को वापस कॉल करने के लिए अपाचे सीएक्सएफ और डब्लूएस-सुरक्षा प्राप्त करने की कोशिश कर रहा हूं। सभी काम करने के करीब हैं लेकिन टनी पल में मुझे डब्लूएस-कॉल वापस स्प्रिंग सुरक्षा देने के लिए पासवर्ड प्राप्त करने में समस्या है।
नीचे हैंडलर galled हो जाता है लेकिन pc.getPassword() शून्य है। मैंने यह पासवर्ड साबुन में भेजा होना चाहता हूँ के रूप में तो
<bean id="wsAuthenticationInterceptor" class="com.olympus.viewtheworld.server.security.auth.WSAuthenticationInInterceptor">
<constructor-arg index="0">
<map key-type="java.lang.String" value-type="java.lang.Object">
<entry key="action" value="UsernameToken" />
<entry key="passwordType" value="PasswordText" />
<entry key="passwordCallbackClass" value="com.olympus.viewtheworld.server.security.auth.ServerPasswordCallback" />
</map>
</constructor-arg>
<property name="authenticationManager" ref="authenticationManager"/>
</bean>
<jaxws:endpoint id="secureHelloService"
implementor="#secureHelloServiceImpl"
implementorClass="com.olympus.viewtheworld.server.service.Impl.SecureHelloServiceImpl"
address="/SoapService/secure/hello">
<jaxws:serviceFactory>
<ref bean="jaxws-and-aegis-service-factory" />
</jaxws:serviceFactory>
<jaxws:inInterceptors>
<bean class="org.apache.cxf.binding.soap.saaj.SAAJInInterceptor"/>
<ref bean="wsAuthenticationInterceptor" />
</jaxws:inInterceptors>
</jaxws:endpoint>
और साबुन अनुरोध मैं SoapUI से बाहर भेज रहा हूँ
है तो मैं इसे पारित वसंत केpublic class ServerPasswordCallback implements CallbackHandler {
public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException {
WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
pc.setPassword(pc.getPassword());
}
मेरे इंटरसेप्टर की स्थापना की है सकते हैं
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:test="http://test/">
<soapenv:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:UsernameToken>
<wsse:Username>rob2</wsse:Username>
<wsse:Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordText">passwordxx</wsse:Password>
</wsse:UsernameToken>
</wsse:Security>
</soapenv:Header>
<soapenv:Body>
<test:hello>
<!--Optional:-->
<hello>asdf</hello>
</test:hello>
</soapenv:Body>
</soapenv:Envelope>
संस्करण बुद्धिमान यह स्प्रिंग 3.1 और CXF 2.7.0
क्या मैं देख रहा हूँ करने के लिए क्या करने की जरूरत है "passwordxx है "ServerPasswordCallback कक्षा में? क्या यह साबुन अनुरोध है, कॉन्फ़िगर या सिर्फ गलत है ?!
चीयर्स, रोब