浏览器智能密钥盘的无组件访问方法转让专利

申请号 : CN201611053427.3

文献号 : CN106506672B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 姜新华

申请人 : 江西金格科技股份有限公司

摘要 :

本发明公开了一种浏览器智能密钥盘的无组件访问方法,将密钥盘访问功能封装在密钥盘组件中,浏览器通过JavaScript发送JSCOM协议的内容到基于HTTP协议的组件服务程序,基于HTTP协议的组件服务程序解析JSCOM协议且按照浏览器的要求访问密钥盘组件。采用JS+HTTP+本机应用程序的方式访问电子密钥组件,支持所有浏览器,无需为适配浏览器另行编写插件,可实现自定义JSCOM协议,JSCOM协议可灵活运用,并封装组件的创建、调用方法和属性,能适配于任何组件;其接口简单,易于集成到应用系统,且协议可扩展到更多应用场景。

权利要求 :

1.浏览器智能密钥盘的无组件访问方法,其特征在于,将密钥盘访问功能封装在密钥盘组件中,浏览器通过JavaScript发送JSCOM协议的内容到基于HTTP协议的组件服务程序,基于HTTP协议的组件服务程序解析JSCOM协议且按照浏览器的要求访问密钥盘组件;所述密钥盘组件通过密钥盘驱动程序实现密钥盘存取功能,所述组件服务程序负责密钥盘组件;

所述组件服务程序的工作流程如下:

1)浏览器作为客户端发起GetSealInfo功能要求,浏览器通过JavaScript先把GetSealInfo功能要求按照JSCOM协议规范打包,再通过HTTP发送到组件服务程序;

2)组件服务程序解析收到的HTTP数据包;

3)根据解析的内容,创建密钥盘组件对象,如果对象已创建,则不再创建;

4)调用密钥盘组件对象的GetSealInfo方法获取印章信息;

5)密钥盘组件对象通过密钥盘驱动程序找到密钥盘里的印章信息;

6)把印章信息返回回传给浏览器;

所述JSCOM协议是一个描述对密钥盘组件发起一次命令或功能调用的协议,描述要求使用智能密钥盘组件的获取印章信息功能,JSCOM协议本质是JSON格式字符串,并封装组件的创建、调用方法和属性。

2.根据权利要求1所述的浏览器智能密钥盘的无组件访问方法,其特征在于,所述密钥盘组件封装为业务功能接口。

3.根据权利要求2所述的浏览器智能密钥盘的无组件访问方法,其特征在于,所述业务功能包括:制作印章、删除印章、查询印章信息和印章验证。

4.根据权利要求1所述的浏览器智能密钥盘的无组件访问方法,其特征在于,所述密钥盘组件包括创建组件对象、调用接口方法和调用接口属性。

说明书 :

浏览器智能密钥盘的无组件访问方法

技术领域

[0001] 本发明属于信息安全技术,尤其涉及一种浏览器智能密钥盘的无组件访问方法。

背景技术

[0002] 基于ActiveX技术的组件多年来一直是浏览器访问电子密钥盘的强大解决方案,浏览器或者浏览器通过浏览器插件创建密钥盘组件,再通过JavaScript使用密钥盘组件访问电子密钥盘。
[0003] 但随着越来越多个性化浏览器的出现和流行,同时网页组件技术长期以来存在安全性的问题,使得越来越多的浏览器决定放弃直接加载网页组件,各浏览器的插件技术虽然可以提供强大的桌面应用程序功能,但对每种功能为每个浏览器都开发一个插件会导致大量冗余工作量。出于安全性考虑,越来越多浏览器将不再支持网页内的组件嵌入,这意味着大量传统网页中间件产品,包括电子密钥盘中间件,将不再被新版浏览器支持。
[0004] 术语解释:
[0005] 智能密钥盘:一种内置操作系统可存放数据的安全硬件设备。
[0006] 浏览器:显示网站服务器或文件系统内的文件,并让用户与此文件交互的一种软件。
[0007] HTTP协议:超文本传输协议是互联网上应用最为广泛的一种网络传输协议。

发明内容

[0008] 本发明的目的是提供一种统一的适配所有浏览器的多浏览器无组件系统,具有强大桌面应用程序功能的解决方案,以代替密钥盘组件和浏览器插件技术,为浏览器与密钥盘组件之间搭起一座桥梁,使得浏览器无需加载密钥盘组件,即可通过JavaScript使用密钥盘组件(ActiveX)的功能。
[0009] 本发明通过以下技术方案实现上述目的。浏览器智能密钥盘的无组件访问方法,将密钥盘访问功能封装在密钥盘组件中,浏览器通过JavaScript发送JSCOM协议的内容到基于HTTP协议的组件服务程序,基于HTTP协议的组件服务程序解析JSCOM协议且按照浏览器的要求访问密钥盘组件;所述密钥盘组件通过密钥盘驱动程序实现密钥盘存取功能,所述组件服务程序负责密钥盘组件;
[0010] 所述组件服务程序的工作流程如下:
[0011] 1)浏览器作为客户端发起GetSealInfo功能要求,浏览器通过JavaScript先把GetSealInfo功能要求按照JSCOM协议规范打包,再通过HTTP发送到组件服务程序;
[0012] 2)组件服务程序解析收到的HTTP数据包;
[0013] 3)根据解析的内容,创建密钥盘组件对象,如果对象已创建,则不再创建;
[0014] 4)调用密钥盘组件对象的GetSealInfo方法获取印章信息;
[0015] 5)密钥盘组件对象通过密钥盘驱动程序找到密钥盘里的印章信息;
[0016] 6)把印章信息返回回传给浏览器。
[0017] 优选地,所述密钥盘组件封装为业务功能接口。
[0018] 优选地,所述业务功能包括:制作印章、删除印章、查询印章信息和印章验证。
[0019] 优选地,所述密钥盘组件包括创建组件对象、调用接口方法和调用接口属性。
[0020] 本发明多浏览器无组件方式访问智能密钥盘是基于JavaScript和http网络通信技术,由于JavaScript和http网络通信被所有浏览器默认支持,所以它可以实现不论何种浏览器,不需要编写浏览器插件,不论浏览器是否支持网页组件,都可以使浏览器访问智能电子密钥盘组件。多浏览器无组件系统由组件http服务器程序(Server)和前台浏览器应用程序(Browser)组成。Browser通过JavaScript请求Server服务,Server服务实质是执行相应的组件功能。
[0021] 本发明采用JS+HTTP+本机应用程序的方式访问电子密钥组件,支持所有浏览器,无需为适配浏览器另行编写插件,可实现自定义JSCOM协议,JSCOM协议可灵活运用,并封装组件的创建、调用方法和属性,能适配于任何组件;其接口简单,易于集成到应用系统,且协议可扩展到更多应用场景。

附图说明

[0022] 图1是本发明的系统结构框图;
[0023] 图2是组件服务程序和密钥盘组件关系图;
[0024] 图3是组件服务程序工作流程图。

具体实施方式

[0025] 以下结合附图和实施例对本发明作进一步说明。参见图1至图3,浏览器智能密钥盘的无组件访问方法,将密钥盘4访问功能封装在密钥盘组件3中,浏览器1通过JavaScript发送JSCOM协议5的内容到基于HTTP协议的组件服务程序2,基于HTTP协议的组件服务程序2解析JSCOM协议5且按照浏览器1的要求访问密钥盘组件3;所述密钥盘组件3通过密钥盘驱动程序6实现密钥盘4存取功能,所述组件服务程序2负责密钥盘组件3;
[0026] 所述组件服务程序2的工作流程如下:
[0027] 1)浏览器1作为客户端发起GetSealInfo功能要求,浏览器1通过JavaScript先把GetSealInfo功能要求按照JSCOM协议5规范打包,再通过HTTP发送到组件服务程序2;
[0028] 2)组件服务程序2解析收到的HTTP数据包;
[0029] 3)根据解析的内容,创建密钥盘组件3对象,如果对象已创建,则不再创建;
[0030] 4)调用密钥盘组件3对象的GetSealInfo方法获取印章信息;
[0031] 5)密钥盘组件3对象通过密钥盘驱动程序6找到密钥盘4里的印章信息;
[0032] 6)把印章信息返回回传给浏览器1。
[0033] 所述密钥盘组件3封装为业务功能接口。所述业务功能包括:制作印章、删除印章、查询印章信息和印章验证。所述密钥盘组件3包括创建组件对象31、调用接口方法32和调用接口属性33。
[0034] 图1是本发明的系统结构框图。在现有的浏览器+组件的技术基础上,本发明提出了浏览器+组件服务的另一种访问密钥盘4的方法。密钥盘组件3可保持与现有组件一致(如图1所示),组件服务程序2是本发明的技术核心,如图1所示,组件服务程序2是浏览器1和密钥盘组件3之间的桥梁,它的存在避免了浏览器1和密钥盘组件3直接连接存在的种种弊端。
[0035] 组件服务程序2与密钥盘组件3的关系,及其工作流程如图2、图3所示。浏览器1通过JavaScript与组件服务程序2交互;浏览器1使用JavaScript代码把调用密钥盘组件3的意图用JSCOM协议5封装后通过HTTP协议发起获取印章信息请求(GetSealInfo)301发送到组件服务程序2;组件服务程序2使用JSCOM协议解析器302解析出JSCOM协议5的内容的意图是调用密钥盘组件3的GetSealInfo方法,根据JSCOM协议5的内容,首先判断密钥盘组件是否已创建303:如果没有,则创建组件COM对象31,即把密钥盘组件加载进内存创建组件对象304;如果已创建,则根据JSCOM协议5内容的意图,调用密钥盘组件3的调用接口方法32或/和调用接口属性33,即调用密钥盘组件3的GetSealInfo方法305,最后返回结果306至浏览器发起获取印章信息请求301。
[0036] JSCOM协议5是一个描述对密钥盘组件3发起一次命令或功能调用的协议。例如,可以描述要求使用智能密钥盘组件3的获取印章信息(GetSealInfo)301功能。JSCOM协议5本质是JSON格式字符串,以下是JSCOM协议5详细说明:
[0037] (1)组件创建:
[0038] 创建密钥盘组件3并获取某接口内存地址。特性:密钥盘组件3实际是由组件服务程序2创建,并驻留在组件服务程序2的进程里。JSCOM协议5的密钥盘组件3创建协议如下:;
[0039] “GetInterface”51是协议关键字(后简称关键字),表示浏览器1要求得到密钥盘组件3的某接口;“progid”52、“interface”54是关键字,分别表示密钥盘组件3的CLASSID和接口的GUID在JSON格式中的名称,“B85036A9-DAAF-409B-822D-22B56CE32825” 53、“B4813745-79B9-4336-8D646F4099561ACC” 55分别是密钥盘组件3的CLASSID和接口GUID在JSON格式中的值对。
[0040] (2)组件方法调用:
[0041] 调用密钥盘组件3的接口的方法。用HTTP GET方式调用接口地址为(示例中是12345678)的接口上的方法。特性:网页脚本发送命令给服务端程序,服务端程序代为调用密钥盘组件3的方法,并回传方法的返回值。JSCOM协议5的密钥盘组件3接口方法调用协议如下:
[0042] ;
[0043] “MethodCall”60是关键字,表示浏览器要求调用密钥盘组件的某接口上的方法;“caller” 61是关键字,表示接口内存地址在JSON格式中的名称,62是接口内存地址在JSON格式中的值对;“function ”63是关键字,表示接口的方法名在JSON格式中的名称,“hello”
64是接口的方法名在JSON格式中的值对;params 65是关键字,表示接口方法的参数在JSON格式中的名称,“type”66、“BSTR”67、“value”68、“this is a string”69是接口方法的参数(后简称参数)在JSON格式中的值对,其中“type”66是关键字,表示参数的类型在JSON格式中的名称,“BSTR”67表示参数类型在JSON格式中的值对,“value”68是关键字,表示参数值在JSON格式中的名称,“this is a string”69表示参数值在JSON格式中的值对;如果方法有多个参数,可以按照JSON格式规范,对“params”65的值对进行扩展。
[0044] (3)属性调用:
[0045] 设置或读取密钥盘组件3的属性,用HTTP GET方式获取接口地址为(示例中是12345678)的接口上的属性值。特性:网页脚本发送命令给服务端程序,服务端程序代为设置或读取密钥盘组件3的属性。JSCOM协议5的密钥盘组件3接口属性调用协议如下:

[0046] “PropertyCall”71是关键字,表示浏览器1要求调用密钥盘组件3的某接口上的属性;“caller”72是关键字,表示接口内存地址在JSON格式中的名称,“12345678”73是接口内存地址在JSON格式中的值对;“property”74是关键字,表示接口的属性名在JSON格式中的名称,“PropName”75是接口的属性名在JSON格式中的值对。
[0047] (4)属性和方法的返回值:
[0048] 调用密钥盘组件3的接口方法或属性后得到的返回值。特性:网页脚本发送命令给服务端程序,服务端程序调用接口的方法后或读取密钥盘组件3的属性后得到的返回值。JSCOM协议5的密钥盘组件3返回值协议如下:
[0049] ;
[0050] “type”81是关键字,表示返回值类型在JSON格式中的名称,“LONG”82是返回值类型在JSON格式中的值对;“value”83是关键字,表示返回值的值在JSON格式中的名称,“100”84是返回值的值在JSON格式中的值对。
[0051] 实施例:以下介绍本发明的一个较佳实施案例:
[0052] 电子签章平台应用多浏览器无组件系统。由于签章key的相关操作是硬件驱动层的功能,网页JavaScript无法单独完成,在没有多浏览器无组件系统时,网页需要加载封装了驱动层功能的组件,这将造成部分浏览器的不支持。通过多浏览器无组件系统访问系统级程序, 网页可以不加载密钥盘组件3,从而消除了浏览器1和密钥盘组件3的相关性,实现了所有浏览器对系统级程序的支持。
[0053] 本发明的组件服务程序2,用于管理智能密钥盘组件3接口,制定前台浏览器1的JavaScript调用时的访问协议(JSCOM协议5),并依此协议提供密钥盘组件3的方法和属性访问;定义一套基本的接口方法、属性访问的协议;定义了密钥盘组件3的创建和接口查询的方式;定义了根据密钥盘组件3某接口的内存地址调用接口方法;定义了根据密钥盘组件3某接口的内存地址设置和获取接口属性值;定义了调用接口方法和属性获得的返回值。 浏览器1通过JavaScript于运行在本机的组件服务程序2通过HTTP协议通信,组件服务程序
2是为HTTP服务端,本机域名固定为localhost或127.0.0.1;当浏览器1需要使用密钥设备的一些功能时,例如查询密钥设备里存储的印章信息,浏览器1的JavaScript会向已在本机后台运行的组件服务程序2发送JSCOM协议5的创建密钥盘组件3指令,组件服务程序2收到指令后把密钥盘组件3加载进内存,并且把密钥盘组件3的接口地址以JSCOM返回值格式返回给浏览器1;浏览器1再给组件服务程序2发送调用接口方法即查询印章信息的指令,组件服务程序2调用内存中的密钥盘组件3查询密钥设备中的印章信息后以JSCOM返回值格式返回给浏览器1。