общий перехватчик веб-сервиса и UsernameTokenValidation, совместимый с Spring-WS и CXF

У меня есть сценарий, в котором я хочу настроить перехватчик безопасности веб-службы и UsernameTokenValidator и поместить это, скажем, в myws-security.jar. Который затем может использоваться любым веб-сервисом (будь то на основе CXF или Spring-WS), который использует этот jar. Какова будет практика работы с этим сценарием.

Будет ли работать перехватчик с классом org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor или org.springframework.ws.soap.security.wss4j.Wss4jSecurityInterceptor? я в этом случае?


person user620339    schedule 06.12.2011    source источник


Ответы (1)


Как в 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>

И общий обработчик обратного вызова должен работать на вас в обоих случаях.

person Biju Kunjummen    schedule 07.12.2011