前面講了如何建立和訪問服務器,但是前面建的服務器都沒有安全控制,這里有很大的安全問題,第一是任何人做一個客戶端都可以都可以訪問
服務器。第二是數據在網絡傳輸過程中都是明碼的,沒有加密,使用網絡偵聽器就可以檢測到傳輸的內容。這是一個標准的系統不允許的,今天就
講一下如何安全的訪問服務器.
首先我們需要使用加密來保證數據在網絡上傳輸的安全,首先在服務器端我們加一個TkbmMWDCP2Crypt.這個是kbmMW 對DCP2Crypt的封裝,
DCP2Crypt 是一個用pascal 實現的各種加密及校驗的開源庫。kbmMW 使用其來實現網絡傳輸過程中的數據加密.
並在TkbmMWTCPIPIndyServerTransport 里面設置crypt 為kbmMWDCP2Crypt1.
另外,我們需要對客戶端的進行認證,這里是通過用戶名及密碼來實現的.在服務器的認證事件里面我們加入以下代碼:
procedure TForm1.kbmMWServer1Authenticate(Sender: TObject;
ClientIdent: TkbmMWClientIdentity; var Perm: TkbmMWAccessPermissions);
begin
if ((clientIdent.Username='xalion') and (clientIdent.password='123456')) then //這里可以通過使用權限庫來對客戶端進行認證
begin
Perm:=[mwapRead,mwapWrite,mwapDelete,mwapExecute,mwapInternalExecute] //對應着服務器的不同訪問權限,在這里可以再細分權限
end;
end;
同時要設置 kbmMWServer 的EarlyAuthentication 為True.
服務器端完成,可以編譯並運行了.
現在來看客戶端,同樣需要先增加一個TkbmMWDCP2Crypt,並設置kbmMWTCPIndyClientTransport 的crypt
為kbmMWSCP2crypt.
並設置kbmMWSimpleClinet 的用戶名和密碼.
編譯和運行,並訪問服務器.
這樣就實現了安全訪問kbmMW 服務器.
當然了由於每個kbmMW服務器會有很多個不同的服務, 可能需要針對不同的服務進行不同的認證,
這個就要在每個服務里面進行進一步的認證了。這里就不再羅嗦了.