общий перехватчик веб-сервиса и UsernameTokenValidation, совместимые с Spring-WS и CXF - PullRequest
0 голосов
/ 06 декабря 2011

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

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

1 Ответ

0 голосов
/ 07 декабря 2011

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

И общееcallbackhandler должен работать для вас в обоих случаях

...