一种基于密钥的OPC代理连接系统和连接方法与流程

文档序号:16245912发布日期:2018-12-11 23:34阅读:228来源:国知局
一种基于密钥的OPC代理连接系统和连接方法与流程

本发明涉及数据采集领域,具体地,涉及一种基于密钥的opc代理连接系统和连接方法。

背景技术

opc(oleforprocesscontrol,用于过程控制的ole)基金会提出了opc标准体系,该标准体系基于microsoft的ole/com/dcom技术,采用客户/服务器模式。dcom提供了完整的通信基础架构,并带有必要的安全机制,诸如授权、鉴权和加密。因此opc客户端通过dcom方式访问opc服务端时,需要做一定的权限和认证配置,一般客户端所在计算机需要有和服务器相同且具有系统管理员权限的账号,需要开放dcom相关的访问权限。

虽然opc基金会最新推出了opcua规范,将opc从com/dcom架构迁移到基于webservice技术框架下,具有高度安全性和兼容性。但在大部分现有自动化项目都集成传统opc技术,用opcua替换原有opc体系代价太高,opcua开发也比较复杂,因此opcua还未得到广泛应用。

因此,需要一种基于密钥的opc代理连接系统和连接方法,以解决上述技术问题。



技术实现要素:

在发明内容部分中引入了一系列简化形式的概念,这将在具体实施方式部分中进一步详细说明。本发明的发明内容部分并不意味着要试图限定出所要求保护的技术方案的关键特征和必要技术特征,更不意味着试图确定所要求保护的技术方案的保护范围。

本发明提供一种基于密钥的opc代理连接系统和连接方法,包括opc客户端、opc服务器、客户代理软件以及服务代理软件,所述opc客户端与所述客户代理软件之间通过com方式连接,所述opc服务器与所述服务代理软件之间通过com方式连接,所述客户代理软件与所述服务代理软件之间通过tcp方式连接,所述客户代理软件和服务代理软件之间通过秘钥方式进行认证。

示例性地,所述opc客户端与所述客户代理软件安装在同一计算机设备上,所述opc服务器与所述服务代理软件安装在同一计算机计算机设备上,所述客户代理软件为所述opc服务器的扩展,所述服务代理软件为所述opc客户端的扩展。

示例性地,所述通过秘钥方式进行认证的方法包括:

在所述客户代理软件中配置所述服务代理软件的ip地址和账号名;

由所述客户代理软件成一对私钥和公钥,并将所述公钥和所述账号名导入所述服务代理软件;

当所述opc客户端第一次向所述客户代理软件发起连接时,所述客户代理软件向所述服务代理软件发起携带账号名的连接认证请求;

服务端代理软件收到所述连接认证请求后,将随机内容的原始字符串用所述账号名对应的公钥加密后返回给客户代理软件;

客户代理软件收到加密的字符串后,用私钥解密,并将解密后的字符串发回至所述服务代理软件;

所述服务代理软件将所述解密后的字符串与原始字符串比较,如果二者一致则认证通过。

示例性地,所述客户代理软件和所述服务代理软件之间设置有心跳检测。

示例性地,当所述服务代理软件在发现连接异常中断后,清除所述opc客户端所有的group和item配置。

示例性地,当所述客户代理软件发现连接异常中断时,尝试重新连接所述服务代理软件并进行认证。

示例性地,当所述客户代理软件与所述服务代理软件重连成功后,向所述服务代理软件发送重建所有group和item的请求,所述服务代理软件按接收到的请求的重建所有group和item。

本发明还提供一种基于密钥的opc代理连接方法,所述方法包括:

客户代理软件和服务代理软件之间通过秘钥方式进行认证,若认证通过则建立连接;

所述客户代理软件以com方式与opc客户端进行通讯,以接收所述opc客户端的请求信息;

所述客户代理软件将所述请求信息转换成tcp消息,并发送至服务代理软件;以及

所述服务代理软件解析出所述tcp消息中的请求信息,并以com方式将所述请求信息发送至opc服务器。

示例性地,还包括:

所述服务代理软件监测所述opc服务端的数据变更,并将所述数据变更转换成tcp消息发送至所述客户代理软件;以及

所述客户代理软件解析出所述tcp消息中的数据变更,并通知给所述opc客户端。

示例性地,所述opc客户端与所述客户代理软件安装在同一计算机设备上,所述opc服务器与所述服务代理软件安装在同一计算机计算机设备上,所述客户代理软件为所述opc服务器的扩展,所述服务代理软件为所述opc客户端的扩展。

示例性地,所述通过秘钥方式进行认证的方法包括:

在所述客户代理软件中配置服务代理软件的ip地址和账号名;

由所述客户代理软件成一对私钥和公钥,并将所述公钥和所述账号名导入所述服务代理软件;

当所述opc客户端第一次向所述客户代理软件发起连接时,所述客户代理软件向所述服务代理软件发起携带账号名的连接认证请求;

所述服务端代理软件收到所述连接认证请求后,将随机内容的原始字符串用所述账号名对应的公钥加密后返回给所述客户代理软件;

所述客户代理软件收到加密的字符串后,用私钥解密,并将解密后的字符串发回至所述服务代理软件;

所述服务代理软件将所述解密后的字符串与原始字符串比较,如果二者一致则认证通过。

示例性地,所述客户代理软件和所述服务代理软件之间设置有心跳检测。

示例性地,当所述服务代理软件在发现连接异常中断后,清除所述opc客户端所有的group和item配置。

示例性地,当所述客户代理软件发现连接异常中断时,尝试重新连接所述服务代理软件并进行认证。

示例性地,当所述客户代理软件与所述服务代理软件重连成功后,向所述服务代理软件发送重建所有group和item的请求,所述服务代理软件按接收到的请求的重建所有group和item。

根据本发明提供的基于密钥的opc代理连接系统和连接方法,采用代理方式避开跨计算机的opc连接,代理间使用密钥方式进行认证,在不改变ocp客户端与服务器程序的基础上,实现便捷连接,又避免计算机之间过度宽松的权限开放,受到安全攻击的威胁。

附图说明

本发明的下列附图在此作为本发明的一部分用于理解本发明。附图中示出了本发明的实施例及其描述,用来解释本发明的装置及原理。在附图中,

图1为根据本发明一实施例的基于密钥的opc代理连接系统的示意图;

图2为根据本发明一实施例的基于密钥的opc代理连接方法的流程图。

具体实施方式

在下文的描述中,给出了大量具体的细节以便提供对本发明更为彻底的理解。然而,对于本领域技术人员而言显而易见的是,本发明可以无需一个或多个这些细节而得以实施。在其他的例子中,为了避免与本发明发生混淆,对于本领域公知的一些技术特征未进行描述。

为了彻底理解本发明,将在下列的描述中提出详细的步骤,以便阐释本发明提出的一种基于密钥的opc代理连接系统和连接方法。显然,本发明的施行并不限定于本领域的技术人员所熟习的特殊细节。本发明的较佳实施例详细描述如下,然而除了这些详细描述外,本发明还可以具有其他实施方式。

应当理解的是,当在本说明书中使用术语“包含”和/或“包括”时,其指明存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或附加一个或多个其他特征、整体、步骤、操作、元件、组件和/或它们的组合。

跨计算机的opc客户端与服务端连接的通讯底层是通过dcom技术实现的,dcom配置与windows操作系统的安全体系是结合在一起的,而且各版本windows系统的安全体系不尽相同。因此做dcom配置需要很多专业知识与丰富的经验,需要经过配置能够互相识别的账号,各类特殊的dcom权限等步骤,稍有不慎就不能建立opc连接或传输opc数据。繁琐的配置给基于opc的软件应用系统的调试,使用带来不便,且影响工程实施的效率。因此在很多情况下opc应用采用快速配置,所有opc相关的计算机采用最宽松的访问授权,造成大多数保护不起作用且允许非授权远程访问。

本发明基于此提供了一种基于密钥的opc代理连接系统和连接方法,采用代理方式避开跨计算机的opc连接,代理间使用密钥方式进行认证,在不改变ocp客户端与服务器程序的基础上,实现便捷连接,又避免计算机之间过度宽松的权限开放,受到安全攻击的威胁。

为了彻底理解本发明,将在下列的描述中提出详细的结构及/或步骤,以便阐释本发明提出的技术方案。本发明的较佳实施例详细描述如下,然而除了这些详细描述外,本发明还可以具有其他实施方式。[示例性实施例一]

下面结合图1对本发明一实施例的基于密钥的opc代理连接系统进行详细描述。

如图1所示,所述基于密钥的opc代理连接系统主要包括opc客户端、opc服务器、客户代理软件以及服务代理软件,所述opc客户端与所述客户代理软件之间使用com通讯方式连接,所述opc服务器与所述服务代理软件之间使用com通讯方式连接,所述客户代理软件与所述服务代理软件之间通过tcp连接。所述系统通过代理方式将dcom连接转为2个com连接,避免了dcom连接在账号、权限方面的繁琐配置,避免opc客户端和opc服务器计算机的账号/密码暴露以及过度宽松的访问权限设置,特别适合用opc客户端临时接入自动化系统查看数据的场景。

在一个实施例中,所述opc客户端与所述客户代理软件安装于同一计算机上,所述opc服务器与所述服务代理软件安装在同一计算机上。由于opc客户端和客户代理软件在同一台计算机上,因此二者之间可以使用com通讯方式,不需要像dcom连接那样做复杂的账号、权限配置。同理,opc服务器和服务代理软件之间也采用com通讯方式。

具体地,安装于opc客户端计算机上的客户代理软件实际上是opc服务器的扩展,其接收opc客户端的连接,将客户端的opc请求信息通过tcp连接转发给服务代理软件。

安装于opc服务器计算机上的服务代理软件实际上是opc客户端扩展,其接收从客户代理软件发来的tcp消息,解析出其中的opc客户端请求,并发送到真正的opc服务器。服务代理软件监测opc服务端的数据变更,转换成tcp消息发给客户代理软件,并由客户代理软件将收到的tcp消息中的内容通知给opc客户端。

客户代理软件与所述服务代理软件之间通过秘钥方式进行认证。示例性地,客户代理软件预先配置有服务代理软件的ip地址和账号名。该账号名是客户代理软件和服务代理软件之间的认证,和opc以及操作系统都无关。客户代理软件还事先生成一对私钥和公钥,私钥保存在客户代理软件内部,公钥需导出后和账号名一起发给服务代理软件的管理员,由其将账号名和公钥一同导入服务代理软件。

在opc客户端第一次向客户代理软件发起连接时,客户代理软件自动向服务代理软件发起连接认证请求,认证请求中携带账号名。服务端代理软件收到请求后将一个随机内容的字符串用该账号对应的公钥加密后返回给客户代理软件。客户代理软件收到加密的字符串后,用自己的私钥解密后将字符串发回给服务端代理。服务端代理软件收到解密的字符串后与原始字符串比较,如果二者一致,则同意客户代理建立连接,后续两者之间就可以互相发送opc请求与响应的内容。

客户代理软件和服务代理软件不转发opc客户端向opc服务器的连接建立请求,而是用相互之间的自定义方式建立连接,并以这个连接结果作为opc服务端与客户代理软件内部的opc服务器连接结果。

在连接成功后,opc客户端向客户代理软件发出了添加group、添加item操作,客户代理软件将上述操作通知到服务代理软件,服务代理软件在内部的opc客户端里执行同样的添加group、添加item操作,并返回操作结果给客户代理软件。后续因为真正opc服务器内部数据变化导致服务代理软件内部opc客户端内部的所有变更都由服务代理软件发送给客户代理软件,由客户代理软件在内部opc服务器上重复执行这些变更。

在一个实施例中,客户代理软件和服务代理软件之间设置有心跳检测,以确保连接的有效性。具体地,客户代理软件定时发送一个固定信息给服务代理软件,服务代理软件收到后回复一个固定信息,如果服务代理软件一定时间内没有收到客户代理软件发送的信息,则视为连接中断。当客户代理软件发现连接异常中断时,会尝试重新连接服务代理软件并进行认证。客户代理软件在与服务代理软件重连成功后,向服务代理软性发送重建所有group和item的请求。服务代理软件在发现连接异常中断后,清除内部opc客户端所有group和item配置,待重新连接成功后,再按照接收到的请求重建所有group和item。

本发明提供的基于密钥的opc代理连接系统通过代理方式将dcom连接转为2个com连接,避免了dcom连接在账号、权限方面的繁琐配置,避免opc客户端和opc服务器计算机的账号/密码暴露以及过度宽松的访问权限设置,特别适合用opc客户端临时接入自动化系统查看数据的场景。

[示例性实施例一]

下面结合图2对本发明一实施例的基于密钥的opc代理连接方法进行详细描述。所述opc代理连接方法由上述基于密钥的opc代理连接系统来实现。

如图2所示,在步骤201,客户代理软件和服务代理软件之间通过秘钥方式进行认证,若认证通过则建立连接;

在步骤202,客户代理软件以com方式与opc客户端进行通讯,以接收所述opc客户端的请求信息;

在步骤203,客户代理软件将所述请求信息转换成tcp消息,并发送至服务代理软件;

在步骤204,所述服务代理软件解析出所述tcp消息中的请求信息,并以com方式将所述请求信息发送至opc服务器。

在一个实施例中,所述方法还包括:在步骤205,所述服务代理软件监测所述opc服务器的数据变更,并将所述数据变更转换成tcp消息发送至所述客户代理软件;以及

在步骤206,所述客户代理软件解析出所述tcp消息中的数据变更,并通知给opc客户端。

其中,所述opc客户端与所述客户代理软件安装于同一计算机上,所述opc服务器与所述服务代理软件安装在同一计算机上。由于opc客户端和客户代理软件在同一台计算机上,因此二者之间可以使用com通讯方式,不需要像dcom连接那样做复杂的账号、权限配置。同理,opc服务器和服务代理软件之间也采用com通讯方式。

具体地,安装于opc客户端计算机上的客户代理软件实际上是opc服务器的扩展,其接收opc客户端的连接,将opc客户端的opc请求信息通过tcp连接转发给服务代理软件。

安装于opc服务器计算机上的服务代理软件实际上是opc客户端扩展,其接收从客户代理软件发来的tcp消息,解析出其中的opc客户端请求,并发送到真正的opc服务器。服务代理软件监测opc服务端的数据变更,转换成tcp消息发给客户代理软件,并由客户代理软件将收到的tcp消息中的内容通知给opc客户端。

客户代理软件与所述服务代理软件之间通过秘钥方式进行认证。示例性地,客户代理软件预先配置有服务代理软件的ip地址和账号名。该账号名是客户代理软件和服务代理软件之间的认证,和opc以及操作系统都无关。客户代理软件还事先生成一对私钥和公钥,私钥保存在客户代理软件内部,公钥需导出后和账号名一起发给服务代理软件的管理员,由其将账号名和公钥一同导入服务代理软件。

在opc客户端第一次向客户代理软件发起连接时,客户代理软件自动向服务代理软件发起连接认证请求,认证请求中携带账号名。服务端代理软件收到请求后将一个随机内容的字符串用该账号对应的公钥加密后返回给客户代理软件。客户代理软件收到加密的字符串后,用自己的私钥解密后将字符串发回给服务端代理。服务端代理软件收到解密的字符串后与原始字符串比较,如果二者一致,则同意客户代理建立连接,后续两者之间就可以互相发送opc请求与响应的内容。

客户代理软件和服务代理软件不转发opc客户端向opc服务器的连接建立请求,而是用相互之间的自定义方式建立连接,并以这个连接结果作为opc服务端与客户代理软件内部的opc服务器连接结果。

在连接成功后,opc客户端向客户代理软件发出了添加group、添加item操作,客户代理软件将上述操作通知到服务代理软件,服务代理软件在内部的opc客户端里执行同样的添加group、添加item操作,并返回操作结果给客户代理软件。后续因为真正opc服务器内部数据变化导致服务代理软件内部opc客户端内部的所有变更都由服务代理软件发送给客户代理软件,由客户代理软件在内部opc服务器上重复执行这些变更。

在一个实施例中,客户代理软件和服务代理软件之间设置有心跳检测,以确保连接的有效性。具体地,客户代理软件定时发送一个固定信息给服务代理软件,服务代理软件收到后回复一个固定信息,如果服务代理软件一定时间内没有收到客户代理软件发送的信息,则视为连接中断。当客户代理软件发现连接异常中断时,会尝试重新连接服务代理软件并进行认证。客户代理软件在与服务代理软件重连成功后,向服务代理软性发送重建所有group和item的请求。服务代理软件在发现连接异常中断后,清除内部opc客户端所有group和item配置,待重新连接成功后,再按照接收到的请求重建所有group和item。

本发明提供的基于密钥的opc代理连接方法通过代理方式将dcom连接转为2个com连接,避免了dcom连接在账号、权限方面的繁琐配置,避免opc客户端和opc服务器计算机的账号/密码暴露以及过度宽松的访问权限设置,特别适合用opc客户端临时接入自动化系统查看数据的场景。

本发明已经通过上述实施例进行了说明,但应当理解的是,上述实施例只是用于举例和说明的目的,而非意在将本发明限制于所描述的实施例范围内。此外本领域技术人员可以理解的是,本发明并不局限于上述实施例,根据本发明的教导还可以做出更多种的变型和修改,这些变型和修改均落在本发明所要求保护的范围以内。本发明的保护范围由附属的权利要求书及其等效范围所界定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1