Domanda

Ho problemi con il client WebService che deve utilizzare WS-Security. Il mio client è scritto con axis2.Funziona quando non abilita Crittografia (ovviamente con il mio emulatore del server).Ho abilitato la crittografia aggiungendo al 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> 
.

Ora, quando invoco il client da Eclipse con argomenti:

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

Ho ottenuto:

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
.

Sono in grado di aprire client.properties come oggetto File.Ho provato a metterlo File in varie directory o ha cambiato il suo nome da utilizzare il percorso completo (sia con le barre, e backslash mentre lavoro su Windows) ma niente aiuta.

Il mio file client.properties è simile:

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
.

Qualche idea per cui ho ricevuto questo errore?

È stato utile?

Soluzione

Ho trovato che devo aggiungere client.properties e mn_keystore.ks wss4j-1.5.8.jar.Non so se è per design.La mia preferenza è avere entrambi i file fuori da questa libreria .jar.

Modifica : su Altro Ambiente Ho provato con client.properties separato e ha funzionato!Ora wss4j-1.5.8.jar è originale, senza configurazione e keystore.Non so perché questo lavoro, e questo non funzionava prima: (

Edit2 : Quando Eclipse Esegui l'applicazione, probabilmente non aggiunge la directory del progetto a ClaaSpath.Mi sono dimesso dall'aggiunta di file .properies a alcuni .jar e ora uso: dal menu Selezionare Run-> Configurazioni di debug, individuare la tua applicazione Java e la sua scheda ClassPath.Quindi selezionare "Voci utente" e fai clic sul pulsante "Avanzate" dal pannello a destra e selezionare "Aggiungi cartella esterna".Ora aggiungi la directory con i tuoi file .properties.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top