2010-12-07 40 views
5

Je dois écrire un client de service Web pour appeler un service Web tiers (basé sur SOAP). La troisième partie a publié un fichier wsdl et les fichiers xsd associés.Appel d'un service Web sécurisé en Java

Le tiers sécuriser leur site Web et des services en utilisant les certificats P12

j'ai utilisé wsdl2java pour générer mes talons. J'ai modifié les points de terminaison et appelé le service. J'ai reçu l'erreur suivante:

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"> 
    <SOAP-ENV:Header></SOAP-ENV:Header> 
    <SOAP-ENV:Body> 
     <SOAP-ENV:Fault> 
     <faultcode xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">wsse:InvalidSecurity</faultcode> 
     <faultstring>SECU1075: An error was discovered processing the &lt;wsse:Security> header</faultstring> 
     <detail>SECU3510: Signature requirements validation failed: Element (/soapenv:Envelope/soapenv:Body) was not signed</detail> 
     </SOAP-ENV:Fault> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

Hmmm, ok. Il est logique que je devrais signer le document.

La partie étrange (à moi) est il n'y a aucune définition de sécurité n'importe où dans le fichier WSDL. Est-ce normal? J'ai contacté le tiers et ils m'ont envoyé un pdf de ce à quoi le message SOAP doit ressembler. Les balises suivantes apparaissent dans l'en-tête: contenant:

<wsse:BinarySecurityToken> 

et

<dsig:SignedInfo> 

donc de ce que je crois, il faut mon certificat et des signatures numériques.

Quelqu'un peut-il recommander comment les générer en Java? J'ai commencé le chemin Axis2/Rampart mais honnêtement, il semble que ceux-ci sont basés sur les exigences de sécurité définies dans le fichier WSDL (corrigez-moi si je me trompe).

Répondre

4

On dirait que vous devez signer votre message en utilisant la norme WS-Security. La norme de sécurité WS ne spécifie aucun mappage de sécurité vers le fichier wsdl. Certaines applications utilisent la stratégie WS-Security et WS-Policy Attachement conjointement avec Ws-security. WS-Policy Attachment spécifie la méthode de mappage des stratégies au WSDL.

Vous pouvez en apprendre davantage sur ces normes de w3.org

Et oui, vous êtes sur la bonne voie, pourrait utiliser WSS4J ou de l'axe Rampart il votre choix.

+0

J'ai effectivement fait quelques progrès avec Rampart après avoir lu votre commentaire. Je pense que j'avais besoin de quelqu'un pour me dire que la définition de sécurité n'était pas requise dans le service même pour aller de l'avant. Aussi étrange que cela puisse paraître. –