轉載自 http://blog.csdn.net/firewolffeng/article/details/2310187數據庫
Web Service如今是很通用的技術,在Web Service咱們須要驗證用戶是否有使用此Web Service的權限,而且要保證在通信過程當中的數據安全,防止數據在傳輸過程當中被網絡竊聽。windows
首先是如何保證Web Service被受權使用,在這裏我說的是經過SoapHeader來判斷調用Web服務的用戶。瀏覽器
1.定義一個安全上下文,而且繼承於SoapHeader類安全
UserID是定義的用戶名,Password是密碼,固然這個UserID和密碼是能夠經過數據庫得到的,在這裏,咱們固定這兩個變量的值服務器
2.在Web Service中定義一個公開的變量,類型是SecurityContext網絡
3.定義一個校驗用戶名和密碼的方法ide
4.在公開的,提供給客戶調用的Web Service方法裏調用校驗的方法,如函數
5.在調用方制定用戶名和密碼工具
在指定完用戶名和密碼後才能調用Web Service的方法網站
上面所說的是如何保證Web Service的受權使用,可是在實際使用中,客戶端傳輸到Web Service的用戶名和密碼都是以須要進行加密。由於Http的數據傳輸是以明文方式進行傳輸的,若是不加密,極可能被偵聽到數據的傳輸而獲得調用Web Service的用戶名和密碼。咱們這裏所說的是採用SSL的加密方式來調用Web Service.
1.首先咱們須要配置一個SSL站點
要想爲某個IIS網站建立數字證書,首先必須使用「Web服務器證書嚮導」 功能爲該網站生成一個證書請求文件。進入「控制面板→管理工具→Internet 信息服務(IIS)管理器」,在IIS管理器窗口中展開「網站」目錄,右鍵點擊要使用SSL安全加密機制功能的網站,在彈出菜單中選擇「屬性」,而後切換到「目錄安全性」標籤頁(如圖),接着點擊「服務器證書」按鈕。在「IIS證書嚮導」窗口中選擇「新建證書」選項,點擊「下一步」,選中「如今準備證書請求,但稍後發送」,接着在「名稱」欄中爲該證書起個名字,在「位長」下拉列表中選擇「密鑰的位長」,這裏要注意,位長不能設置的過大,不然會影響通訊質量;接着設置證書的單位、部門、和地理信息,在站點「公用名稱欄」中輸入該網站的域名,而後指定證書請求文件的保存位置,這裏筆者將該證書請求文本文件保存在「d:/certreq.txt」。這樣就完成了證書請求文件的生成。
完成了證書請求文件的生成後,就能夠開始申請IIS網站證書了。但這個過程須要證書服務(Certificate Services)的支持。Windows 2003系統默認狀態沒安裝此服務,須要手工添加。
安裝證書服務
在「控制面板」中運行「添加或刪除程序」,切換到「添加/刪除Windows組件」頁,在「Windows組件嚮導」對話框中,選中「證書服務」選項,接下來選擇CA類型,這裏筆者選擇「獨立根CA」,而後爲該CA服務器起個名字,設置證書的有效期限,建議使用默認值「5年」便可,最後指定證書數據庫和證書數據庫日誌的位置後,就完成了證書服務的安裝。
完成了證書服務的安裝後,就能開始申請IIS網站證書了。運行 Internet Explorer瀏覽器,在地址欄中輸入「http://localhost/CertSrv/default.asp」。接着在「Microsoft 證書服務」歡迎窗口中點擊「申請一個證書」連接,而後在證書申請類型中點擊「高級證書申請」連接,在高級證書申請窗口中點擊「使用BASE64編碼的 CMC或PKCS#10文件提交….」連接,接着將證書請求文件的內容複製到「保存的申請」輸入框中,這裏筆者的證書請求文件內容保存在「d:/ certreq.txt」,最後點擊「提交」按鈕。
這個語句指定了遠程證書校驗的回調函數。在指定了遠程證書校驗的回調函數後,就能夠開始實例化WebService
接着點擊 「頒發的證書」目錄,打開剛剛頒發成功的證書,在 「證書」對話框中切換到「詳細信息」標籤頁。點擊「複製到文件」按鈕,彈出證書導出對話框,一路下一步,在「要導出的文件」欄中指定文件名,這裏筆者保存證書路爲爲「d:/cce.cer」,最後點擊「完成」。
在IIS管理器的「目錄安全性」標籤頁中,點擊「服務器證書」按鈕,這時彈出「掛起的證書請求」對話框,選擇「處理掛起的請求並安裝證書」選項,點擊「下一步」後,指定好剛纔導出的IIS 網站證書文件的位置,接着指定SSL使用的端口,建議使用默認的「443」,最後點擊「完成」按鈕.
完成了證書的導入後,IIS網站這時尚未啓用SSL安全加密功能,須要對IIS服務器進行配置。
選擇須要加密訪問的站點目錄(若是但願全站加密,能夠選擇整個站點),右鍵單擊打開屬性頁,在「目錄安全性」標籤頁,點擊安全通訊欄的「編輯」按鈕,選中「要求安全通道(SSL)」和「要求128位加密」選項,最後點擊「肯定」按鈕便可。若是須要用戶證書認證等高級功能,也能夠選擇要示客戶證書選擇,還能夠把特定證書映射爲windows用戶賬戶。
這個方法老是返回true是用於忽略客戶端證書時使用,若是要使用客戶端證書,可能會用到中間兩個參數,這裏我沒有研究,你們能夠研究一下
2.在調用方初始化時加入下面的代碼
上面所說的給你們拋磚引玉,經過SoapHeader來保證WebService的受權使用,經過SSL來保證數據的加密,防止網絡偵聽