Apache CXF - 将拦截器绑定到服务方法

时间:2014-07-16 12:38:00

标签: java web-services cxf interceptor ws-security

我试图弄清楚如何以不同的方式加密不同的方法。例如,我有两种方法的测试服务。我想要其中一种方法可以访问,无需身份验证,加密或任何东西任何人都可以使用它。另一方面,第二种方法应该具有指示和加密的主体,并且只有服务器已知的那些客户端才能够访问第二种方法。 我现在的问题是,我可以做其中任何一个。我可以加密所有方法的soap-messages,也可以不加密。 所以我需要的东西可能看起来很像这样:

<bean id="Method_Interceptor" class="${methodInterceptorClass}">
    <constructor-arg>
        <constructor-arg type="java.lang.String" value="methodName"/> 
        <ref bean="TimestampSignEncrypt_Request"/>
        <ref bean="TimestampSignEncrypt_Response"/>
    </constructor-arg>
</bean>

<bean id="TimestampSignEncrypt_Request" class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
    <constructor-arg>
        <map>
            <!-- Use this action order for local clients -->
            <entry key="action" value="Timestamp Signature Encrypt"/>
            <!-- Use this action spec for WCF clients
            <entry key="action" value="Signature Encrypt Timestamp"/>
            -->
            <entry key="signaturePropFile"
                   value="de/narz/apacheCXFTest/helloWorld/keyManagement/config/fiverx.link.trust.properties"/>
            <entry key="decryptionPropFile"
                   value="de/narz/apacheCXFTest/helloWorld/keyManagement/config/fiverx.link.properties"/>
            <entry key="passwordCallbackClass"
                   value="de.narz.apacheCXFTest.helloWorld.passwordHandling.PasswordCallbackHandler"/>
        </map>
    </constructor-arg>
</bean>

<bean id="TimestampSignEncrypt_Response" class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor">
    ...

可以这样做吗?经过数小时的研究后我没有找到任何东西......

0 个答案:

没有答案