通過這段時間的預研發現Python語言中能夠支援wss的架構很少而且極不成熟,現在能夠瞭解到的有SOAPpy、pyGridWare、Ndg Security;當然,這些架構都還依賴於一些很知名的架構套件,比如ZSI等;前兩者官方文檔中沒有任何關於對wss支援的說明和sample,只是論壇和mail list中說這個架構能實現對wss的支援,但具體如何?沒有線索,據我的估計,這兩個架構即使能實現,自己也需要寫非常多的代碼實現,在我的預研過程中早期就已經放棄這兩個架構了;之後我轉向了Ndg Security這個架構,這個架構確定能支援wss,而且有部分文檔和sample可供參考;
針對Ndg Security深入研究後發現現在無法滿足我們的需求,體現在:
1)Ndg Security只支援X.509V3版本的認證,對我們現在使用的V1版本認證不支援;即使我們對ISV採用新的V3版本的認證,alisoft可以支援,但是我們的公開金鑰是V1版本的,也無法實現用戶端驗證;若考慮我們用兩套版本,這樣又需要ISV告訴我們到底是用什麼版本的認證,無法發送這個通知資訊暫時也沒有好的辦法,所以這種方案目前也不現實;
2)Ndg Security不支援用戶端不驗證服務端簽名,即他接收到responseXml之後發現裡面有簽名是必須驗證的,否則出錯;這也限制了我們對該架構的使用;
3)Ndg Security暫時不支援Timestamp,但是我們現在服務端是有時間戳記資訊的,故而無法驗證;但是他們已經有計劃要提供對Timestamp的支援了,但現在還沒發布;
BTW,順便提下Python環境配置和各架構安裝過程中遇到的問題;Python和Ruby一樣,有提供一個使得安裝更為簡便的工具,那就是Eggs,或者說是easyInstall,對應於RubyGems;通過此種方式發布的架構套件標識了他依賴的相關包及其,這樣在安裝過程中他就可以自動尋找並下載所有的依賴包,非常的方便;但也不是所有的架構都支援這種形式,有些架構只提供源碼tar形式,需要自己編譯,這樣就有很多麻煩了,比如pyGridWare的安裝就很費事,windows下的安裝需要linux下相關包支援,比如gcc等;所以最好是安裝個cygwin,這樣linux下對應的很多東西都可以被類比和支援,會給安裝帶來不少好處;
聯絡到更關注的Java,我想Java為什麼沒有一個類似於RubyGems/PythonEggs這樣的東東呢?雖然Maven利用了這種思想來進行打包發布,我們公司內部也利用這種思想寫了自己的打包工具Antx,但這畢竟只是自己公司層級的可用,要想達到每個架構自己發布的時候都遵循這種規則,讓需要使用這個架構的人能夠更快的安裝和知道他所依賴的架構套件,好像路還很長,暫時還沒有這種標準出現!
PS:下面列出了相關架構的串連,以供參考;
RubyGems:http://docs.rubygems.org/
PythonEggs/EasyInstall:http://peak.telecommunity.com/DevCenter/EasyInstall
SOAPpy/ZSI:http://pywebsvcs.sourceforge.net/
pyGridWare:http://dev.globus.org/wiki/PyGridWare
ZOPE:http://www.zope.org/
pyGSI:http://dev.globus.org/wiki/Python/pyGsi
pyXml:http://pyxml.sourceforge.net/
Ndg Security:http://proj.badc.rl.ac.uk/ndg/wiki/T12_Security
M2Crypto:http://sandbox.rulemaker.net/ngps/m2/
cygwin:http://www.cygwin.com