在 Spring-WS 和 CXF 中,您通常不提供自己的 WSS 拦截器,您只需使用适当的回调处理程序配置提供的拦截器。因此,在您的情况下,如果您创建一个适当的回调处理程序(基于安全操作的类型),它需要从javax.security.auth.callback.CallbackHandler继承,这个回调处理程序可以在 Spring-WS 和 Apache CXF 中重用:
在 Spring-WS 中,您将按照以下方式做一些事情:
<bean id="wss4jSecurityInterceptor" class="org.springframework.ws.soap.security.wss4j.Wss4jSecurityInterceptor">
<property name="validationCallbackHandler" ref="callBackHandler" />
<property name="validationActions" value="UsernameToken" />
</bean>
在 Apache CXF 中:
<jaxws:endpoint address=".." id=".." implementor="#memberendpoint">
<jaxws:inInterceptors>
<bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
<constructor-arg>
<map>
<entry key="action" value="UsernameToken" />
<entry key="passwordType" value="PasswordDigest" />
<entry key="passwordCallbackRef">
<ref bean="callBackHandler" />
</entry>
</map>
</constructor-arg>
</bean>
</jaxws:inInterceptors>
在这两种情况下,通用的回调处理程序都应该适合您