前面讲了如何建立和访问服务器,但是前面建的服务器都没有安全控制,这里有很大的安全问题,第一是任何人做一个客户端都可以都可以访问
服务器。第二是数据在网络传输过程中都是明码的,没有加密,使用网络侦听器就可以检测到传输的内容。这是一个标准的系统不允许的,今天就
讲一下如何安全的访问服务器.
首先我们需要使用加密来保证数据在网络上传输的安全,首先在服务器端我们加一个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服务器会有很多个不同的服务, 可能需要针对不同的服务进行不同的认证,
这个就要在每个服务里面进行进一步的认证了。这里就不再罗嗦了.