通過這段時間的預研發現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