2010-02-16 4 views
1

J'ai été chargé de réécrire une application .NET qui communique en utilisant un proxy WSE à PHP. Il y a une chose avec laquelle je suis aux prises. Je vois le code UsernameToken userNameToken1 = new UsernameToken(sToken_UserName, sToken_Password, PasswordOption.SendPlainText); Qui, je suppose, ajoute un en-tête de sécurité à l'enveloppe SOAP. Je ne suis pas sûr de savoir comment le faire en PHP. J'ai essayé l'extrait suivant que j'ai trouvé en ligne quelque partAjout de l'en-tête de sécurité du savon avec php

$token = new stdClass; 
$token->Username = new SOAPVar($username, XSD_STRING, null, null, null, $ns); 
$token->Password = new SOAPVar($password, XSD_STRING, null, null, null, $ns); 

$wsec = new stdClass; 
$wsec->UsernameToken = new SoapVar($token, SOAP_ENC_OBJECT, null, null, null, $ns); 

$headers = new SOAPHeader($ns, 'Security', $wsec, true); 
$client->__setSOAPHeaders($headers); 

Mais je reviens à l'exception suivante:

Uncaught SoapFault exception: [SOAP-ENV:Client] com.sun.xml.wss.XWSSecurityException: Receiver Requirement for nonce has not been met; nested exception is com.sun.xml.wss.XWSSecurityException: com.sun.xml.wss.XWSSecurityException: Receiver Requirement for nonce has not been met 

Qu'est-ce que je fais mal ici? Y a-t-il des informations manquantes que je dois savoir?

Répondre

2

Vous envoyez le mot de passe en texte brut (je suppose que le protocole SSL est en cours?), Mais le service Web requiert également un nonce.

Voir cette discussion car il semble traiter le même problème: http://wso2.org/forum/thread/5304

0

J'ai passé beaucoup de temps à essayer différentes approches de WS-Security avec PHP.

Enfin, je suis tombé sur ce research paper by IBM qui décrit une solution exceptionnelle. Nous l'utilisons maintenant pour une intégration à haut volume avec notre service Web.