使用delphi 开发多层应用(十)安全访问服务器

      前面讲了如何建立和访问服务器,但是前面建的服务器都没有安全控制,这里有很大的安全问题,第一是任何人做一个客户端都可以都可以访问

服务器。第二是数据在网络传输过程中都是明码的,没有加密,使用网络侦听器就可以检测到传输的内容。这是一个标准的系统不允许的,今天就

讲一下如何安全的访问服务器.

     首先我们需要使用加密来保证数据在网络上传输的安全,首先在服务器端我们加一个TkbmMWDCP2Crypt.这个是kbmMW 对DCP2Crypt的封装,

DCP2Crypt 是一个用pascal 实现的各种加密及校验的开源库。kbmMW 使用其来实现网络传输过程中的数据加密.

并在TkbmMWTCPIPIndyServerTransport 里面设置crypt 为kbmMWDCP2Crypt1.

另外,我们需要对客户端的进行认证,这里是通过用户名及密码来实现的.在服务器的认证事件里面我们加入以下代码:

procedure TForm1.kbmMWServer1Authenticate(Sender: TObject;  ClientIdent: TkbmMWClientIdentity; var Perm: TkbmMWAccessPermissions);beginif ((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服务器会有很多个不同的服务, 可能需要针对不同的服务进行不同的认证,

这个就要在每个服务里面进行进一步的认证了。这里就不再罗嗦了.

时间: 2024-09-21 03:34:02

使用delphi 开发多层应用(十)安全访问服务器的相关文章

使用delphi 开发多层应用(二十一)使用XE5 RESTClient 直接访问kbmmw 数据库

     delphi XE5 出来了,增加了android 的开发支持,另外增加了一个RESTClient 来支持访问REST 服务器. 这个功能非常强大,可以直接使用非常多的REST 服务器.同时也可以支持访问kbmmw 的web 服务器, 并完美的通过JSON支持使用kbmmw 的JSON 数据格式.使我们非常方便的在win32,win64,mac os,ios 和android 上访问kbmmw 的数据库.     首先我们建立一个可以返回JSON 的kbmmw web 服务器.这个可以

使用delphi 开发多层应用(三)Delphi常用多层框架介绍

    目前在delphi 开发多层应用的框架基本上集中在以下几种,每种开发框架都有自己的优缺点,没有最好的,大家可以根据 自己的实际需求选择相应框架,我把我本人在使用几种框架的体会与大家分享一下.如有不对之处,可以拍砖.      1. DELPHI 自身提供的DataSnap       从delphi 3 开始,delphi 自身就开始支持多层开发,后期的版本逐步加强三层开发功能,在delphi 6 以后, 把这一功能叫Datasnap,并且每个都有很多变化,包括DBExpress 的数据

使用delphi 开发多层应用(十九) ios通过soap 访问kbmmw服务器

      随着delphi XE4 的推出,开始真正意义上支持ios 的开发,由于目前kbmmw 还不完全支持ios 的开发,因此 无法直接使用kbmmw 的客户端访问kbmmw 的服务器(虽然kbmmw 也提供了C 的客户端,可以使用xcode连接 kbmmw的C 客户端来访问kbmmw 服务器,但是功能有限,而且要熟悉xcode),对于急着想在ios 使用kbmmw 服务的同学,可以先使用kbmmw 的webservice 方式访问kbmmw 服务器.   下面我就介绍以下如何在ios 访

使用delphi 开发多层应用(二十二)使用kbmMW 的认证管理器

  从kbmmw 4.4 开始,增加了认证管理器,这个比原来的简单认证提供了更多的功能.细化了很多权限操作. 今天对这一块做个介绍.   要做一个认证管理,大概分为以下5步:        1.  定义你要保护的资源,一般是服务.函数,当然你只要不限麻烦,可以是任何东西:        2.  定义使用者(用户):        3.  定义角色,使用者通过角色与服务器打交道:        4.  定义角色或用户可以访问的资源(授权):        5. 定义认证与登录的限制(本步不是必须的

使用delphi 开发多层应用(十二)使用kbmMW webserver 返回JSON

     由于kbmMW 服务器与客户端交互是使用它的专用数据格式,因此与其它语言及平台相互访问的话就会有兼容问题, 为了最大化的利用kbmMW 服务器,从kbmMW 4.0 以后,其开始支持JSON 格式传递数据,其实就是可以通过 Webserver根据客户端的request 来返回对应的JSON串.     继续利用上次的webserver 的例子,在webservice 里面加一个TkbmMWIBDACQuery和TkbmMWJSONStreamFormat, 如图: 同时在代码里面添加以

使用delphi 开发多层应用(十八)使用Basic4android 访问RTC 服务的二进制流(照片)

    上次写了b4a 通过xmlrpc 访问rtc 的远程服务,有网友询问如何通过b4a 访问RTC web 的二进制流,例如如何下载 服务器上的照片,其实访问二进制流和访问字符串类似,不同的地方是,由于是通过http 协议,对于二进制流,需要先转换成 base64 编码,到客户端后再再把base64 转换回去成二进制码,就可以了.(注:由于RTC 的bug,需要RTC 6.08 以上的版本)    RTC服务器端的代码如下: procedure TForm1.RtcFunction3Exec

使用delphi 开发多层应用(十四)使用Basic4android 显示kbmMW server数据

    前面说了basic4android 直接访问kbmMW server 的方法,由于javaclient 不直接支持服务器端数据库的操作, 要显示数据的内容就需要通过JSON 方式来转换.今天就大概介绍一下转换的办法. 首先要在服务器端把数据库转换为JSON ,为了方便,我修改了一下前面的转换过程. function Txalionsrv.datatojson(intablename: string): string; var alljson: ISuperObject; datajson

使用delphi 开发多层应用(二十) ios通过soap 显示kbmmw服务器上的图片

    上一次通过soap,使IOS 访问了kbmmw服务器,今天顺便看能不能与android 共用服务器上的那个 下载图片的功能.首先说一下服务端的的程序,基本上就是前面的代码,没有变化,只是要indy 里面的 base64 编码功能,不再啰嗦,直接代码: function Txalionsrv.Performgetimgm(ClientIdent: TkbmMWClientIdentity; const Args: array of Variant): Variant; var fs:TMe

使用delphi 开发多层应用(二十四)KbmMW 的消息方式和创建WIB节点

    KbmMW 中支持基于UDP的消息广播,也支持TCP/IP hub/spoke 方式,还有 基于UDP或者TCP/IP 的点对点的消息传输. 1.基于UDP的消息广播       根据UDP  的工作原理,在同一个网段里面,可以发布广播包.这样发布者只需要发布一次, 消息就可以被同一网段上的所有订阅者收到.这样大大的降低了网络带宽.这个方式的最大缺点是 无法直接跨越网段,如果要跨越网段,就需要建立一个Gateway. Gateway 就是一个程序,连接两个网段. 它接受第一个网段的广播消