1
我發現非常有趣的回答how to implement ws-security 1.1 in php5 但我需要使用證書來驗證與WebService的連接。如何使用證書在PHP5中實現WS-Security 1.0?
有沒有人知道在PHP5上做這種事情的方法?
非常感謝提前!
我發現非常有趣的回答how to implement ws-security 1.1 in php5 但我需要使用證書來驗證與WebService的連接。如何使用證書在PHP5中實現WS-Security 1.0?
有沒有人知道在PHP5上做這種事情的方法?
非常感謝提前!
這是我的腳本。有了這個腳本,它返回給我:
驗證郵件的安全性時發生錯誤。 而我想找到一種方法來調試此消息。 .pem文件是從密鑰文件簽名證書和ca文件生成的。 .crt是ca-certificate。我沒有什麼信息服務器能確切....... 後來我心底檢查服務器持有人的詳細信息,並能將它們提供我在同一個麻煩些調試信息
require('wse/soap-wsa.php');
require('wse/soap-wsse.php');
define('PRIVATE_KEY', dirname(__FILE__).'/cert/B_13925_Cert.pem');
define('CERT_FILE', dirname(__FILE__).'/cert/Generali-Root.crt');
class mySoap extends SoapClient {
function __doRequest($request, $location, $saction, $version) {
$dom = new DOMDocument();
$dom->loadXML($request);
$objWSA = new WSASoap($dom);
$objWSA->addAction($saction);
$objWSA->addTo($location);
$objWSA->addMessageID();
$objWSA->addReplyTo();
$dom = $objWSA->getDoc();
$objWSSE = new WSSESoap($dom);
/* Sign all headers to include signing the WS-Addressing headers */
$objWSSE->signAllHeaders = TRUE;
$objWSSE->addTimestamp(3600);
/* create new XMLSec Key using RSA SHA-1 and type is private key */
$objKey = new XMLSecurityKey(XMLSecurityKey::RSA_SHA1, array('type'=>'private'));
/* load the private key from file - last arg is bool if key in file (TRUE) or is string (FALSE) */
$objKey->loadKey(PRIVATE_KEY, TRUE);
/* Sign the message - also signs appropraite WS-Security items */
$objWSSE->signSoapDoc($objKey);
/* Add certificate (BinarySecurityToken) to the message and attach pointer to Signature */
$token = $objWSSE->addBinaryToken(file_get_contents(CERT_FILE));
$objWSSE->attachTokentoSig($token);
$request = $objWSSE->saveXML();
$f = fopen('debug.txt','w');
fwrite($f,print_r($request,true));
fclose($f);
return parent::__doRequest($request, $location, $saction, $version);
}
}
$soap_url = 'https://test.domain.bg:9443/GPM/GPMPolicyService.svc/gpm?wsdl';
$soap_client = new mySoap($soap_url);
$getNomenclaturesRequest = new getNomenclaturesRequest(array(1,2,3,4));
$request = new GetNomenclatures($getNomenclaturesRequest);
try {
$out = $soap_client->GetNomenclatures($request);
var_dump($out);die();
} catch (SoapFault $fault) {
// var_dump($fault);
}
header('Content-type:text/xml');
print_r(file_get_contents('debug.txt'));
我真的。 我現在發現的是兩個圖書館,但現在我沒有運氣。 http://code.google.com/p/wse-php/ http://phpwebservices.blogspot.com/如果您有任何成功,我將非常感謝您分享它。 –
嘿朱利安,非常感謝信息。我正在下載wse-php來嘗試一下。我還發現有趣的下面的擴展[PHP的wssecurity](www.docweb.provincia.pu.it/download/wssecurity.html)我會分享我的發現。 – Marc