Pregunta

Tengo un problema con WebService cliente que tiene el uso de WS-Security.Mi cliente está escrito con axis2.Funciona cuando no me permiten la criptografía (por supuesto, con mi emulador de servidor).He habilitado la criptografía mediante la adición de axis.xml:

<!--Signature and Encryption : Using the request's certificate-->
<module ref="rampart" />

<parameter name="OutflowSecurity">
  <action>
    <items>Signature</items>
    <user>mn</user>
      <passwordCallbackClass>PWCallback</passwordCallbackClass>
      <signaturePropFile>client.properties</signaturePropFile>
    <signatureKeyIdentifier>SKIKeyIdentifier</signatureKeyIdentifier>
    <signatureParts>{Element}{http://schemas.xmlsoap.org/soap/envelope/}Body</signatureParts>
  </action>
</parameter> 

Ahora, cuando invoco cliente de Eclipse con argumentos:

-Daxis2.xml=axis-repo/conf/axis2.xml -Daxis2.repo=axis-repo

Me dieron:

org.apache.axis2.AxisFault: CryptoFactory: Cannot load properties: client.properties
at org.apache.rampart.handler.WSDoAllSender.processMessage(WSDoAllSender.java:67)
at org.apache.rampart.handler.WSDoAllHandler.invoke(WSDoAllHandler.java:72)
at org.apache.axis2.engine.Phase.invoke(Phase.java:318)
at org.apache.axis2.engine.AxisEngine.invoke(AxisEngine.java:251)
at org.apache.axis2.engine.AxisEngine.send(AxisEngine.java:416)
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:402)
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229)
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165)
...
Caused by: java.lang.RuntimeException: CryptoFactory: Cannot load properties: client.properties
at org.apache.ws.security.components.crypto.CryptoFactory.getProperties(CryptoFactory.java:258)
at org.apache.ws.security.components.crypto.CryptoFactory.getInstance(CryptoFactory.java:171)
at org.apache.ws.security.handler.WSHandler.loadSignatureCrypto(WSHandler.java:431)
at org.apache.ws.security.handler.WSHandler.doSenderAction(WSHandler.java:137)
at org.apache.rampart.handler.WSDoAllSender.processBasic(WSDoAllSender.java:201)
at org.apache.rampart.handler.WSDoAllSender.processMessage(WSDoAllSender.java:64)
... 9 more
Caused by: java.lang.NullPointerException
at org.apache.ws.security.components.crypto.CryptoFactory.getProperties(CryptoFactory.java:253)
... 14 more

Soy capaz de abrir client.properties como File objeto.Traté de poner este archivo en varios directorios o cambió su nombre por el uso de la ruta de acceso completa (ambos con barras, y barras, mientras que yo trabajo en Windows) pero nada ayuda.

Mi cliente.archivo de propiedades se parece a:

org.apache.ws.security.crypto.provider=org.apache.ws.security.components.crypto.Merlin
org.apache.ws.security.crypto.merlin.keystore.type=jks
org.apache.ws.security.crypto.merlin.keystore.password=mn
org.apache.ws.security.crypto.merlin.file=mn_keystore.ks

Alguna idea de por qué tengo este error?

¿Fue útil?

Solución

He encontrado que tengo que agregar client.properties y mn_keystore.ks a wss4j-1.5.8.jar.No sé si es por diseño.Mi preferencia es que tanto los archivos de esta .jar biblioteca.

EDITAR:en otro lugar he intentado con independiente client.properties ¡y funcionó!Ahora wss4j-1.5.8.jar es como la original, sin necesidad de configuración y el almacén.No sé por qué este trabajo, y no esta trabajado anteriormente :(

EDIT2:cuando Eclipse ejecutar la aplicación probablemente no agregar directorio del proyecto para claaspath.He dimitido de la adición .properies archivo a algunos .jar y ahora yo uso:desde el menú, seleccione Ejecutar->Debug Configurations, busque la aplicación de Java y su classpath de la ficha.A continuación, seleccione "Entradas de Usuario" y haga clic en el botón "Avanzado" desde el panel de la derecha, y seleccione "Agregar Carpeta Externa".Ahora agregue el directorio con su .properties los archivos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top