2010-07-29 8 views
0

J'ai un client de service Web créé par Axis2. Ce service utilise à la fois SSL et WS-Security, donc j'utilise rampart. Je pense que mon client envoie la requête correcte, mais je suis exception:Comment voir ce que Axis2 envoie et reçoit?

org.apache.axis2.AxisFault: Must Understand check failed for header http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd : Security 
at org.apache.axis2.engine.AxisEngine.checkMustUnderstand(AxisEngine.java:97) 
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:163) 
at org.apache.axis2.description.OutInAxisOperationClient.handleResponse(OutInAxisOperation.java:364) 
at org.apache.axis2.description.OutInAxisOperationClient.send(OutInAxisOperation.java:417) 
at org.apache.axis2.description.OutInAxisOperationClient.executeImpl(OutInAxisOperation.java:229) 
at org.apache.axis2.client.OperationClient.execute(OperationClient.java:165) 
at pl.firstdata.www.wdx.business.card.CardServiceStub.getBalance(CardServiceStub.java:1570) 
at pl.firstdata.www.wdx.business.card.wdx_client.main(wdx_client.java:164) 

Est-il possible de voir la requête « nue » et la réponse avec les en-têtes HTTP?

Alors que ce service utilise SSL, je pense que je ne peux pas utiliser le moniteur HTTP, et cela devrait être fait par axis2 après "application" de WS-Security mais avant SSL. Je peux activer cette journalisation sur mon émulateur (sans SSL) et il semble comme ça:

POST /webservices/emu/get_info.hdb HTTP/1.1 
Content-Type: text/xml; charset=UTF-8 
SOAPAction: "" 
User-Agent: Axis2 
Host: 127.0.0.1:8765 
Content-Length: 4585 

<?xml version='1.0' encoding='UTF-8'?><soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#"><soapenv:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"><wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" soapenv:mustUnderstand="1"><xenc:EncryptedKey Id="EncKeyId-0D71FF61F3796881F812803190645315"><xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5" /><ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"> 
<wsse:SecurityTokenReference><wsse:KeyIdentifier ... 
... 

Répondre

0

J'utilise stunel avec tcpmon. Étapes:

  1. mon axis2 ma requête HTTP normale; cette requête est envoyée à tcpmon
  2. tcpmon journaux et envoie la requête à stunel
  3. stunel ajoute SSL et envoie la requête endcrypted au serveur de destination
  4. stunel reçoit une réponse chiffrée, déchiffre et renvoie à tcpmon
  5. tcpmon logs réponse décryptée et l'envoie à mon axis2 application
2

Utilisez l'outil de tcpmon pour cela.

Veuillez noter que dans la plupart des installations basées sur Linux, il sera probablement construit pour vous. Une fois que vous avez terminé le processus de construction, vous pouvez trouver l'exécutable dans $ {AXIS2C_HOME}/bin/tools sous Linux ou sur% AXIS2C_HOME% \ bin \ tools sous MS Windows.

+0

Je l'utilise déjà, mais pas pour les services protégés par SSL. Le fournisseur de services dit qu'il ne peut pas désactiver SSL même pour les tests, j'ai donc besoin d'autres outils. Peut-être que axis2 a une option pour voir une requête "nue" et une réponse "nue"? –

+0

Je crois que le violoneux peut agir comme un homme dans le proxy du milieu, même pour le débogage ssl. (fiddler est un proxy utilisé pour le débogage des requêtes http) – Toad

+0

Merci. Comme dans ma réponse, j'ai utilisé stunel. Il n'a pas besoin de .NET comme fiddler2, et semble facile pour quelqu'un qui utilise tcpmon. –