7
votes

Validation d'une signature d'un message de savon

Tout le monde, bonjour!

Ceci est mon message de demande: P>

<stubMethod xmlns="http://ws_base.ws.stuff/" /> 


4 commentaires

J'utiliserais un cadre comme Metro, Axis2 qui prend en charge WS-Security. Tout le reste peut devenir un cauchemar (vous devez lire les spécifications WS-S :-)


Avez-vous d'abord lu le CANONICALISATION XML exclusive Spécification?


Eh bien, pas encore, mais merci pour la réponse! Je vais le faire. Connaissez-vous un article, qui contient des suggestions sur mon problème?


Comment avez-vous généré cet en-tête?


3 Réponses :


2
votes

Eh bien, j'ai réussi à valider la Digest de référence: Canonicalize -> SHA1 -> base64. Le problème est que je ne peux pas valider la signature elle-même. J'ai essayé: xxx

où xmlstring est une balise . J'ai lu Ceci . Je ne sais toujours pas comment formater le XML de telle manière. En fait, il doit être fait en mémoire d'une manière ou d'une autre


0 commentaires

7
votes

La solution est la suivante: xxx

xxx

et donner au x 509keyselecteur une clé publique dont vous avez besoin pour valider la signature. < / p>


3 commentaires

Merci dmitry pour votre solution complète. Je reçois javax.xml.crypto.marshalexception: la mise en œuvre du document doit prendre en charge DOM Niveau 2 et être au courant de l'espace de noms de noms lorsque j'appelle cette méthode avec / enveloppe / en-tête / Secenture / Signature et / enveloppe / corps . Savez-vous d'où vient-il?


Pourquoi dois-je obtenir: java.lang.illegalargumentException: ID n'est pas un attribut à javax.xml.crypto.dom.domCryptocontext.setidattributs


@Bludwarf Votre DocumentBuilderFactory La mise en œuvre n'est pas au courant des espaces de noms. Vous devrez appeler documentbuilderfactory.setnamespaceaware (true) avant d'analyser le document.



0
votes

Je reçois un problème similaire tout en essayant de construire la signature à l'intérieur d'une balise SMSS: Sécurité dans l'en-tête SOAP. J'essaie de construire une référence. Si je l'ajoute avec une chaîne vide en tant que premier paramètre: xxx

Il ne fonctionne pas car je reçois le message suivant du serveur:

  • " Aucune donnée trouvée après la transformation de l'élément de référence (). Un ou plusieurs les transformations peuvent être manquantes. "

    Si je l'ajoute avec un identifiant comme: xxx

    Je reçois l'erreur suivante:

    • javax.xml.crypto.dsig.xmlsignatuureException: javax.xml.crypto.urireferenceException: com.sun.org.apache.xml.internal.security.utils.resolver.resourceresolverException: ne peut pas résoudre l'élément avec le corps d'identification

      Ceci a été décrit ici comme un bug: HTTPS: //bugs.java.com/bugdatabase/view_bug.do?bug_id=8017265

      et, comme tel, j'ai essayé d'utiliser la méthode Setidattributens pour définir l'ID, au lieu de le réglage directement sur le corps avec corps.setatattribute (id, "corps"); xxx

      mais je reçois le même problème que @Dustin Sun. Je reçois aussi java.lang.illegalargumentException:

      • ID n'est pas un attribut à javax.xml.crypto.dom.domCryptocontext.setidattributs.

        Je suis un peu coincé pour le moment. Je reviendrai si je trouve quelque chose.


0 commentaires