目前在PHP中調用帶有WS-Security支援的Web Service解決方案還是比較少的,WSF/PHP是一個不錯的選擇,官方首頁為http://wso2.org/projects/wsf/php,下面就介紹下在運用WSF/PHP的時候需要注意的一些地方;
1、WSF/PHP【WSO2 Web Services Framework for PHP】 是WSO2.ORG提供的專門針對PHP調用Web Service的一個優秀架構,使用非常簡單;但是WSO2不僅僅提供針對PHP的ws架構,而且還對其他很多中語言提供開發架構,比如基於Spring、Perl、Ruby……,除此之外還提供很多其他架構和培訓服務,具體可查詢wso2.org和wso2.com;
2、WSF/PHP模組的安裝需要很多其他的支援包,在windows下面體現為一些dll檔案,主要包括Libxml2、iconv、Openssl、zlib,而不僅僅是Libxml2【GNOME XML Library】;安裝過程中需要將這些依賴dll全部都集中到wsf_c/lib/目錄中;這些依賴包可以到http://www.zlatkovic.com/pub/libxml/下載,下載完成之後對各壓縮包解壓,dll檔案一般位於/bin/目錄中;
3、WSF所依賴的這些dll檔案一定需要copy到/windows/system32/中才行,否則載入模組不成功;這點和官方文檔中說的直接將wsf_c/lib/加入到path中即可是不一致的;當然這點可能有其他方式可以解決,因為我不精通PHP,但是和一些同事溝通過,但沒結果;
4、驗證是否正常載入了WSF模組,只用php -m命令查看列表是不夠的,即時WSF模組沒有載入成功,但是php.ini中設定了WSF模組,那php -m的列表中也會包括WSF;最保險的做法是查看伺服器日誌比如Apache;
5、在申明WSSecurityToken執行個體的時候,參數receiverCertificate是用來加密Soap訊息的,而不是用來驗證服務端返回的簽名資訊的,所以若只是需要簽名,那該參數無需設定;WSF/PHP目前還沒有提供驗證服務端返回的簽名資訊功能的;
6、WSF/PHP調用WS時預設使用SOAP 1.2協議,這可能會對某些服務端ws調用時出錯,若需要設定使用SOAP版本,則可以在申請WSClient執行個體時設定參數"useSOAP" => "1.1"實現;