2014-10-15 4 views
0

Для SOAP веб-службы, у меня есть рабочий пример конфигурации для PasswordDigest аутентификации через camel-cxf и WSS4J:Basic Auth с WSS4J/верблюжьего CXF (Https)

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

Если кто-то имеет некоторые рекомендации здесь будет понятно, ,

ответ

0

Вы смешиваете два разных способа настройки WS-Security в CXF.

«PolicyBasedWSS4JInInterceptor» используется, когда у вас есть WS-SecurityPolicy для настройки безопасности. Вам вообще не нужно добавлять его, так как CXF автоматически добавит его в цепочку перехватчиков. Он настроен через теги конфигурации, указанные здесь: http://cxf.apache.org/docs/ws-securitypolicy.html. Теги конфигурации, которые вы указываете как «свойства», игнорируются для случая политики безопасности.

Если вы хотите настроить защиту с помощью политики в этом случае, вам нужно будет удалить политику «HashPassword», если вы хотите поддерживать пароли открытого текста.

Если вы хотите настроить только через «действия», вы должны использовать вместо этого «WSS4JInInterceptor» (который распространяется на перехватчик, основанный на политике).

Кол.

+0

Не смотря на это, спасибо Кольму. – vikingsteve