2010-02-16 115 views
1

我的任務是重寫使用WSE代理與PHP通信的.NET應用程序。 我正在處理一件事。我看到代碼 UsernameToken userNameToken1 = new UsernameToken(sToken_UserName, sToken_Password, PasswordOption.SendPlainText); 我假設,它將一個安全頭添加到SOAP信封中。我不知道如何在PHP中執行此操作。我想下面的代碼片段,我在網上找到的地方用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); 

但我得到下面的異常回:

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 

我在做什麼錯在這裏?是否缺少我需要知道的信息?

回答

0

我花了很多時間嘗試各種方法來WS-Security的用PHP。

最後我偶然發現了這個research paper by IBM,概述了一個出色的解決方案。我們現在將其用於與我們的Web服務進行大量集成。