1

对于 SOAP Web 服务,我有一个PasswordDigest通过camel-cxf和进行身份验证的配置示例WSS4J

<camel-cxf:cxfEndpoint id="myService"
                       address="${ws.endpoint.address}"
                       serviceName="es:MyService"
                       wsdlURL="wsdl/myservice.wsdl"
                       endpointName="es:MyServicePort"
                       serviceClass="com.us.MyServiceEndpoint"
                       xmlns:es="http://us.com/services/MyService">
    <camel-cxf:inInterceptors>
        <bean class="org.apache.cxf.ws.security.wss4j.PolicyBasedWSS4JInInterceptor">
            <property name="properties">
                <map>
                    <entry key="action" value="UsernameToken"/>
                    <entry key="passwordType" value="PasswordDigest"/>
                    <entry key="passwordCallbackRef" value-ref="myPasswordCallback"/>
                </map>
            </property>
        </bean>
    </camel-cxf:inInterceptors>
</camel-cxf:cxfEndpoint>

我们有一个请求为 BASIC 身份验证启用相同的资源 - 如何修改此配置来做到这一点?

我更改了以下行并通过 SOAP UI 进行了测试:

                    <entry key="passwordType" value="PasswordText"/>

然而,结果是来自以下的 SOAP 错误UsernameTokenValidator.java

  <soap:Fault>
     <faultcode>soap:Server</faultcode>
     <faultstring>These policy alternatives can not be satisfied: 
         {http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702}
         UsernameToken: Password hashing policy not enforced</faultstring>
  </soap:Fault>

如果有人在这里有一些指导,将不胜感激。

4

2 回答 2

1

您正在混合在 CXF 中配置 WS-Security 的两种不同方式。

当您有 WS-SecurityPolicy 来配置安全性时,使用“PolicyBasedWSS4JInInterceptor”。您根本不需要实际添加它,因为 CXF 会自动将它添加到拦截器链中。它通过此处指定的配置标签进行配置:http: //cxf.apache.org/docs/ws-securitypolicy.html。对于安全策略案例,您指定为“属性”的配置标签将被忽略。

如果您想在这种情况下通过策略配置安全性,如果您想支持明文密码,则需要删除“HashPassword”策略。

如果您只想通过“操作”进行配置,则应该使用“WSS4JInInterceptor”(基于策略的拦截器扩展)。

科尔姆。

于 2014-10-16T11:04:00.150 回答
0

WSS-PasswordType 需要从 更改PasswordTextPasswordDigest

于 2018-11-27T13:52:27.067 回答