2010-07-19 3 views
0

J'ai un problème avec le client WebService qui doit utiliser WS-Security. Mon client est écrit avec axis2. Cela fonctionne quand je n'active pas la cryptographie (bien sûr avec mon émulateur de serveur). Je la cryptographie en ajoutant à axis.xml:Problème de cryptographie Axis2/rampart avec signaturePropFile

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

Maintenant, quand j'invoque client d'Eclipse avec des arguments:

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

Je suis:

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 

Je suis en mesure d'ouvrir client.properties en tant qu'objet File. J'ai essayé de mettre ce fichier dans divers répertoires ou changé son nom pour utiliser le chemin complet (à la fois avec des barres obliques, et des barres obliques inverses lorsque je travaille sur Windows) mais rien n'y fait.

Mon fichier client.properties ressemble:

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 

Toute idée pourquoi je suis cette erreur?

Répondre

2

J'ai trouvé que je dois ajouter client.properties et mn_keystore.ks à wss4j-1.5.8.jar. Je ne sais pas si c'est par conception. Ma préférence est d'avoir les deux fichiers hors de cette bibliothèque .jar.

EDIT: sur l'autre environnement j'ai essayé avec séparé client.properties et cela a fonctionné! Maintenant wss4j-1.5.8.jar est comme d'origine, sans configuration et keystore. Je ne sais pas pourquoi ce travail, et cela ne fonctionnait plus tôt :(

EDIT2:. Lorsque l'application d'exécution Eclipse ne probablement pas ajouter le répertoire de projet claaspath Je résignent d'ajouter fichier .properies à certains .jar et maintenant j'utilise: depuis le menu, sélectionnez Exécuter-> Configurations de débogage, localisez votre application Java et son onglet chemin de classe, puis sélectionnez "Entrées utilisateur" et cliquez sur le bouton "Avancé" dans le panneau de droite, puis sélectionnez "Ajouter dossier externe". avec vos fichiers .properties

Questions connexes