0

我有一个场景,我想配置一个 web 服务安全拦截器和一个 UsernameTokenValidator 并将其放入myws-security.jar中。然后可以由使用此 jar 的任何 web 服务(无论是基于 CXF 还是 Spring-WS)使用。处理这种情况的做法是什么。

在这种情况下,使用org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor类或org.springframework.ws.soap.security.wss4j.Wss4jSecurityInterceptor配置拦截器对我有用吗?

4

1 回答 1

0

在 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>

在这两种情况下,通用的回调处理程序都应该适合您

于 2011-12-07T01:43:43.970 回答