Tôi đã theo dõi một số hướng dẫn và không thành công lắm!Apache CXF và WS-Security - Gọi lại mật khẩu
Tôi đang cố gắng nhận Apache CXF và WS-Security để gọi lại cho người xác thực bảo mật mùa xuân của mình. Tất cả là gần để làm việc nhưng tại thời điểm tne tôi có một vấn đề nhận được mật khẩu để cung cấp cho an ninh mùa xuân ra khỏi WS-gọi lại.
Trình xử lý bên dưới bị tiết lộ nhưng pc.getPassword() là rỗng. Tôi muốn đây là mật khẩu được gửi trong xà phòng để tôi có thể vượt qua nó để mùa xuân
public class ServerPasswordCallback implements CallbackHandler {
public void handle(Callback[] callbacks) throws IOException,
UnsupportedCallbackException {
WSPasswordCallback pc = (WSPasswordCallback) callbacks[0];
pc.setPassword(pc.getPassword());
}
đánh chặn của tôi được thiết lập như vậy
<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>
Và yêu cầu xà phòng tôi đang gửi ra khỏi soapUI là
<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>
Version khôn ngoan nó là mùa xuân 3.1 và CXF 2.7.0
gì tôi cần phải làm gì để xem "passwordxx "trong lớp ServerPasswordCallback? Có phải là yêu cầu Soap, cấu hình hay sai?
Chúc mừng, Rob