我不敢說俺的方法是最佳方案,反正這世界上很多東西都是變動的,正像老子所說的——“反(返)者,道之動”。以往看到有些文章中說,為每個客戶端安裝證書嫌麻煩,就直接采用把用戶名和密碼塞在SOAP頭中發(fā)送,然后在服務(wù)器端自定義一個消息攔截器來驗證用戶名和密碼。

以老周不靠譜的學(xué)識水平認(rèn)為,這樣做不好,直接把明文而且敏感信息放在SOAP頭中傳輸,這尺度實在太大了,太暴露了,廣電局是不會允許的,雖然現(xiàn)在流行穿得越少越好,但那些是婊子的境界。像用戶名密碼這些重要信息,怎么能直接傳輸呢,這很容易被偷窺的。

其實,WCF并不要求客戶端必須安裝服務(wù)器證書。證書就好比身份證,用來標(biāo)識你的身份的,所以你不能拿著你外公的身份證去實名買火車票,除非售票的人是傻逼才會賣給你。

一般來說,傳輸層的安全是不需要提供證書的,但是消息安全是要求服務(wù)器提供證書的,客戶端可以以證書為憑據(jù),也可以不提供,即只對服務(wù)器有要求,客戶端可選擇其他憑據(jù),如Windows驗證。經(jīng)過老周試驗,如果客戶端憑據(jù)為Windows,那么服務(wù)器也可以不設(shè)置證書的。不過,對用戶名/密碼驗證方式,服務(wù)器必須提供證書。

說白了,根本不必為每個客戶端安裝服務(wù)器證書,完全不應(yīng)該把用戶名密碼放在Header里面,那樣太危險。

 

說再多廢話意義不大,還是來個例子有用。

要實現(xiàn)自定義的用戶名密碼驗證,需要實現(xiàn)一個抽象類——UserNamePasswordValidator。

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運,軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式