J'ai commencé à étudier les services Web entre la banque et un client et je me heurte à un mur quand il s'agit de signer un SOAP. Ce dont j'ai besoin devrait ressembler à quelque chose comme çaSignature de l'en-tête de savon
<soapenv:Envelope xmlns:cor="http://bxd.fi/CorporateFileService" xmlns:mod="http://model.bxd.fi" xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<wsse:Security xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
<wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="CertId-9502902" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
MIID…/DnjbkAZBo7vsj78zzdk7KNliBIqBcIszdJ3dEHRWSI7FspRxyiR0NDm4lpyLwFtfw=
</wsse:BinarySecurityToken>
<ds:Signature Id="Signature-12345678" xmlns:ds="http://www.w3.org/2000/09/xmldsig#">
<ds:SignedInfo>
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<ds:SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<ds:Reference URI="#id-4453123">
<ds:Transforms>
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
</ds:Transforms>
<ds:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<ds:DigestValue>zYeQGz0jnyy3tI5gruq+IlGyzQo=</ds:DigestValue>
</ds:Reference>
</ds:SignedInfo>
<ds:SignatureValue>m5fuzJnVOQGNsu4s2kfaI+UTReUSz9pMxH…=</ds:SignatureValue>
<ds:KeyInfo Id="KeyId-98765432"><wsse:SecurityTokenReference wsu:Id="STRId-33454994" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">
<wsse:Reference URI="#CertId-9502902" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3"/>
</wsse:SecurityTokenReference>
</ds:KeyInfo>
</ds:Signature>
</wsse:Security>
</soapenv:Header>
Ma question est comment puis-je signer un message de savon en PHP? Je suppose qu'il y a un meilleur moyen que d'ajouter manuellement des en-têtes? J'ai réussi à signer un document XML qui est envoyé dans un corps d'enveloppes mais je suis totalement perdu avec la signature du SOAP lui-même.
Pourriez-vous dire un peu plus précisément comment avez-vous résolu ce problème avec: WSO2. Peut-être pourriez-vous poster votre partie de code côté client? –
J'ai arrêté d'utiliser WSO2 il y a un certain temps. Le problème était que lorsque la réponse SOAP était suffisamment importante, le journal indiquait que la vérification du condensé échouait. Pour autant que je sache lors de la navigation dans les fichiers journaux, le corps de savon entier n'a pas été inclus pour c14-canonicalization qui a causé une erreur de vérification. Mais je peux rechercher mes archives quand j'ai le temps si vous cherchez toujours un exemple – Harmiih