使用delphi 開發多層應用(十)安全訪問服務器


      前面講了如何建立和訪問服務器,但是前面建的服務器都沒有安全控制,這里有很大的安全問題,第一是任何人做一個客戶端都可以都可以訪問

服務器。第二是數據在網絡傳輸過程中都是明碼的,沒有加密,使用網絡偵聽器就可以檢測到傳輸的內容。這是一個標准的系統不允許的,今天就

講一下如何安全的訪問服務器.

     首先我們需要使用加密來保證數據在網絡上傳輸的安全,首先在服務器端我們加一個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服務器會有很多個不同的服務, 可能需要針對不同的服務進行不同的認證,

這個就要在每個服務里面進行進一步的認證了。這里就不再羅嗦了.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM