Axis2/rempart de la cryptographie problème avec signaturePropFile
-
17-09-2020 - |
Question
J'ai un problème avec le Service client qui dispose d'utiliser WS-Security.Mon client est écrit avec axis2
.Il fonctionne lorsque je n'ai pas l'activer
la cryptographie (bien sûr avec mon émulateur de serveur).J'ai activé la cryptographie
en ajoutant à 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>
Maintenant, quand j'invoque client à partir d'Eclipse avec des arguments:
-Daxis2.xml=axis-repo/conf/axis2.xml -Daxis2.repo=axis-repo
J'ai eu:
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
comme File
objet.J'ai essayé de mettre ce
fichier dans différents répertoires ou a changé son nom à utiliser le chemin complet (les deux barres obliques,
et les barres obliques inverses pendant que je travaille sur Windows) mais rien n'y fait.
Mon client.les propriétés de fichier ressemble à ceci:
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
Aucune idée de pourquoi j'ai eu cette erreur?
La solution
J'ai trouvé que j'ai à ajouter client.properties
et mn_keystore.ks
pour
wss4j-1.5.8.jar
.Je ne sais pas si c'est par la conception.Ma préférence est d'avoir à la fois les fichiers de ce .jar
de la bibliothèque.
MODIFIER:sur d'autres, j'ai essayé avec différents client.properties
et cela a fonctionné!Maintenant wss4j-1.5.8.jar
est qu'à l'origine, sans configuration et le fichier de clés.Je ne sais pas pourquoi ce travail, et ce n'est pas travaillé de plus en plus tôt :(
EDIT2:lors de l'Éclipse exécuter l'application, il n'est probablement pas ajouter un répertoire de projet à claaspath.J'ai démissionné de l'ajout .properies fichier à certains .jar et maintenant j'utilise:dans le menu, choisissez Exécuter->Debug Configurations, recherchez votre application Java et son classpath de l'onglet.Ensuite, sélectionnez "Entrées Utilisateur" et cliquez sur le bouton "Avancé" du panneau de droite, et sélectionnez "Ajouter un Dossier Externe".Maintenant, ajoutez répertoire avec votre .properties
les fichiers.