一种认证方法、装置、终端、存储介质以及系统转让专利

申请号 : CN201810819450.1

文献号 : CN109068326B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 王泽一陈丘邬俊杰李斌

申请人 : 腾讯科技(深圳)有限公司

摘要 :

本发明提出一种认证方法、装置、终端、存储介质以及系统,所述方法包括:触发第一认证终端的定向鉴权处理,以使得第一认证终端发起注册验证,并在验证成功时获取激活码;对所述第一认证终端的签名进行验证,根据验证结果提交授权申请;以使得所述在授权申请完成后,触发第一认证终端的激活申请。

权利要求 :

1.一种认证方法,其特征在于,所述方法应用于第二认证终端,包括:触发第一认证终端的定向鉴权处理,以使得所述第一认证终端向后台服务器发起注册验证,并在验证成功时获取激活码进入待激活状态;

发送所述第一认证终端的签名至所述后台服务器以使所述后台服务器进行验证,根据验证结果向所述后台服务器提交授权申请;以使得所述授权申请完成后,所述后台服务器触发所述第一认证终端的激活申请。

2.根据权利要求1所述的认证方法,其特征在于,所述触发第一认证终端的定向鉴权处理之前,还包括与所述第一认证终端进行配对验证,包括:接收来自第一认证终端的序列号和第一非重复随机码;

生成与所述第一非重复随机码一致的第二签名;

向所述第一认证终端发送所述第二签名和第二非重复随机码,以使得所述第一认证终端对所述第二签名进行验证,基于所述第二非重复随机码生成第一签名,并发送所述第一签名;

接收并验证所述第一签名;

当所述第一签名验证成功时,向第一认证终端发送会话密钥,并接收所述第一认证终端的会话密钥。

3.根据权利要求1所述的认证方法,其特征在于,所述触发第一认证终端的定向鉴权处理步骤包括:获取第一认证终端的序列号和设备签名,同时触发第一认证终端的定向鉴权码。

4.根据权利要求1所述的认证方法,其特征在于,发送所述第一认证终端的签名至所述后台服务器以使所述后台服务器进行验证,根据验证结果向所述后台服务器提交授权申请步骤包括:发送第一认证终端签名;

接收返回的签名验证结果;

当签名成功时,提交授权申请。

5.根据权利要求1所述的认证方法,其特征在于,在所述第一认证终端的激活申请完成之后,将采集到的第二认证数据发送至后台服务器;所述后台服务器用于接收所述第二认证数据,并将所述第二认证数据变换为可扩展的序列化数据结构。

6.根据权利要求5所述的认证方法,其特征在于,所述后台服务器还用于拉取第一认证终端的第一认证数据,将所述第一认证数据变换为可扩展的序列化数据结构。

7.根据权利要求1所述的认证方法,其特征在于,在触发所述第一认证终端的激活申请之后,若连接断开,使用激活码轮询的方式进行激活操作。

8.一种认证装置,其特征在于,所述装置对应于第二认证终端,包括:触发单元,用于触发第一认证终端的定向鉴权处理,以使得所述第一认证终端向后台服务器发起注册验证,并在验证成功时获取激活码进入待激活状态;

验证单元,用于发送所述第一认证终端的签名至所述后台服务器以使所述后台服务器进行验证,根据验证结果向所述后台服务器提交授权申请;以使得所述授权申请完成后,所述后台服务器触发所述第一认证终端的激活申请。

9.根据权利要求8所述的认证装置,其特征在于,所述装置还包括配对验证单元,用于与所述第一认证终端进行配对验证,其包括:序列号和随机码接收子单元,用于接收来自第一认证终端的序列号和第一非重复随机码;

签名生成子单元,用于生成与所述第一非重复随机码一致的第二签名;

随机码发送子单元,用于向所述第一认证终端发送所述第二签名和第二非重复随机码,以使得所述第一认证终端对所述第二签名进行验证,基于所述第二非重复随机码生成第一签名,并发送所述第一签名;

签名接收子单元,用于接收并验证所述第一签名;

密钥交换子单元,用于当所述第一签名验证成功时,向第一认证终端发送会话密钥,并接收所述第一认证终端的会话密钥。

10.根据权利要求8所述的认证装置,其特征在于,触发单元包括:获取子单元,用于获取第一认证终端的序列号和设备签名,同时触发第一认证终端的定向鉴权码。

11.根据权利要求8所述的认证装置,其特征在于,所述验证单元包括:发送子单元,用于发送第一认证终端签名;

接收子单元,用于接收返回的签名验证结果;

申请提交子单元,用于当签名成功时,提交授权申请。

12.根据权利要求8所述的认证装置,其特征在于,所述装置还包括:认证数据发送单元,用于在所述第一认证终端的激活申请完成之后,将采集到的第二认证数据发送至后台服务器;所述后台服务器用于接收所述第二认证数据,并将所述第二认证数据变换为可扩展的序列化数据结构。

13.一种存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由所述处理器加载并执行以实现如权利要求1至7任一所述的认证方法。

14.一种终端,其特征在于,所述终端包含权利要求8-12之一所述的装置。

15.一种认证系统,其特征在于,所述系统包括第一认证终端、第二认证终端、云服务器以及后台服务器;

第二认证终端接收第一认证终端发送的设备的序列号和设备签名,同时触发第一认证终端的定向鉴权;

第一认证终端通过网络向后台服务器申请网络注册,后台服务器根据注册请求生成激活码,并向第一认证终端返回激活码;

第一认证终端接收激活码后,处于待激活状态;

第二认证终端向后台服务器发送第一认证终端的签名,由后台服务器对第一认证终端的签名进行验证,并返回验证结果;第二认证终端接收后台服务器返回的验证结果,在签名成功时,根据用户授权向后台服务器提交激活申请;

响应于激活申请,后台服务器向云服务器发送临时授权码;云服务器向后台服务器返回临时授权状态,当临时授权成功时,第一认证终端服务器异步向后台服务器申请获取永久授权码;

当云服务器获取到永久授权码时,后台服务器通知第一认证终端授权完成;

第一认证终端向后台服务器发送激活申请;后台服务器根据激活申请向第一认证终端发送激活密钥;第一认证终端根据激活密钥登录后台服务器。

说明书 :

一种认证方法、装置、终端、存储介质以及系统

技术领域

[0001] 本发明涉及互联网信息数据处理技术领域,特别涉及一种认证方法、装置、终端、存储介质以及系统。

背景技术

[0002] 考勤记录是一个企业行政和人事的重要组成部分,考勤涉及员工薪资、人力资源、行政分配等方面。如图1所示,目前大部分企业都在使用传统的硬件考勤机,硬件考勤机一般通过指纹、人脸等生物特征信息完成考勤工作,员工不易作弊,安全性高。管理员需要在考勤机上设置考勤规则、查看考勤记录等。当员工打卡后,管理员通常是使用定期导出的方式,将打卡记录进行人工的手动导出。该方式面临着硬件配置困难、查看员工记录不便、无法批量处理员工记录等问题。此外,由于硬件设备的限制,在硬件上进行规则配置、人员配置、记录查看都存在不便。硬件考勤机里面的组织人员架构也不能自动更新,一旦企业组织架构变化,这时就需要管理员在考勤机上手动修改人员信息或者规则。
[0003] 基于移动终端APP的打卡模式,需要借助手机获取经纬度或者Wi-Fi信息。对于经纬度信息而言,首先手机定位存在一定的误差,范围从几米到几十米;其次,如果手机Root或者越狱,定位可以被伪造。对于Wi-Fi打卡而言,由于iOS系统的限制,手机App只能读取当前连接Wi-Fi的BSSID信息,但是在某些AP(Access Point)类型的Wi-Fi环境下,Wi-Fi的BSSID每天会被重置一次,这样导致同一个Wi-Fi的BSSID可能会变化。

发明内容

[0004] 为了解决现有技术中存在的技术问题,本发明实施例提供了一种认证方法、装置、终端、存储介质以及系统。所述技术方案如下:
[0005] 一方面,提供一种认证方法,所述方法包括,触发第一认证终端的定向鉴权处理,以使得第一认证终端发起注册验证,并在验证成功时获取激活码;对所述第一认证终端的签名进行验证,根据验证结果提交授权申请;以使得所述在授权申请完成后,触发第一认证终端的激活申请。
[0006] 另一方面,提供一种认证装置,所述装置包括:触发单元,用于触发第一认证终端的定向鉴权处理,以使得第一认证终端发起注册验证,并在验证成功时获取激活码;验证单元,用于对所述第一认证终端的签名进行验证,根据验证结果提交授权申请;以使得所述在授权申请完成后,触发第一认证终端的激活申请。
[0007] 另一方面,提供一种终端,所述终端包含前述的装置。
[0008] 另一方面,提供一种存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现前述的认证数据的处理方法。
[0009] 另一方面,提供一种认证系统,所述系统包括第一认证终端、第二认证终端、云服务器以及后台服务器;第二认证终端接收第一认证终端发送的设备的序列号和设备签名,同时触发第一认证终端的定向鉴权;第一认证终端通过网络向后台服务器申请网络注册,后台服务器根据注册请求生成激活码,并向第一认证终端返回激活码;第一认证终端接收激活码后,处于待激活状态;第二认证终端向后台服务器发送第一认证终端的签名,由后台服务器对第一认证终端的签名进行验证,并返回验证结果;第二认证终端接收后台服务器返回的验证结果,在签名成功时,根据用户授权向后台服务器提交激活申请;响应于激活申请,后台服务器向云服务器发送临时授权码;云服务器向后台服务器返回临时授权状态,当临时授权成功时,第一认证终端服务器异步向后台服务器申请获取永久授权码;当云服务器获取到永久授权码时,后台服务器通知第一认证终端授权完成;第一认证终端向后台服务器发送激活申请;后台服务器根据激活申请向第一认证终端发送激活密钥;第一认证终端根据激活密钥登录后台服务器。
[0010] 本发明实施例提供的技术方案带来的有益效果包括:基于本说明书提供的技术方案,能够实现认证终端与后台服务器之间的激活和认证完成。保证第一认证终端的认证数据能够被后台服务器接收和处理。

附图说明

[0011] 为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0012] 图1是本发明的现有技术示意图;
[0013] 图2(a)是本发明一个实施例提供的实施环境的示意图;
[0014] 图2(b)是本发明一个实施例提供的实施环境的示意图;
[0015] 图3本发明一个实施例提供的认证方法流程示意图;
[0016] 图4(a)是本发明一个实施例提供的认证方法流程示意图;
[0017] 图4(b)是本发明一个实施例提供的认证配对验证方法流程示意图;
[0018] 图5是本发明实施例提供的认证方法流程图;
[0019] 图6(a)-6(f)是本发明实施例提供的认证方法流程示意图;
[0020] 图7是本发明实施例提供的认证装置原理框图;
[0021] 图8是本发明实施例提供的认证装置原理框图;
[0022] 图9是本发明实施例提供的服务器构架示意图;
[0023] 图10是本发明实施例提供的服务器的结构示意图。

具体实施方式

[0024] 为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
[0025] 在本发明的一个实施例中,如图2(a)、图2(b)所示,提出了一种认证系统的使用场景图,包括各个位置认证终端和后台服务器。位置认证终端负责对用户进行验证,其可以具有多种类型;后台服务器负责对认证数据进行存储,可以是单台服务器、服务器集群或者云服务器。本实施例中的位置认证数据是指对用户在特定时间对所在地点的认证,可见,其可以包括一般日常工作的打卡考勤、出差考勤,也可以包括运动项目中对于选手到达指定地点的认证、也可以包括APP中对于用户达到指定地点的位置认证等。
[0026] 在系统中,后台服务器会接收来自各个位置认证终端汇总而来的认证信息。位置认证终端可以是固定的认证设备,例如考勤机通过指纹、密码、脸部识别等方式进行验证,并将获得的验证信息通过网络向服务器进行汇总。认证终端还可以是移动终端,用户登录APP之后通过移动终端进行验证,然后根据APP指定的方式进行验证,在通过移动终端进行验证过程中,还包括将移动终端所在的地理位置信息作为验证信息的一部分。认证终端还可以为个人工作端,例如PC机。认证也可以是与用户绑定的可穿戴设备,例如带有识别功能的手环、臂环、帽子等等,可穿戴设备可以通过与设备的交互实现对穿戴者所在位置的认证。
[0027] 来自各个认证终端的数据最终被汇总到后台服务器。不同终端因为操作系统、验证格式等原因,发送的数据格式是不同的,所以汇总在后台服务器处时,需要将来自各终端的验证数据转换为统一的格式,然后对格式转换后的数据进行存储。
[0028] 后台服务器对认证数据进行验证,验证包括数据所在的群组,认证发生的时间,认证所在的地点等等。在验证过程中,后台服务器会向用户端返回考勤错误数据,例如用户群组错误、用户数据错误、用户认证规则冲突等等。同时,对于后台规则类错误,后台服务器会发送信息给管理员端口,由管理员端口进行规则决策。
[0029] 管理员端口,会根据后台服务器发送的错误报告,根据预定的规则设置权限,也可以通过手动设置配置权限。
[0030] 后台服务器还可以针对出现错误的用户拉取用户服务器群组,通过群组或者群组内即时通信的方式在群组内进行错误播报和问题收集。
[0031] 用户端可以通过网络与后台服务器进行通信,以对考勤信息进行修正。
[0032] 综上所述,图2(a)和图2(b)记载了认证系统的使用场景和系统基本构架,基于本实施例的系统,能够实现用户对于认证系统的大数据量支持和数据的高复杂度管理。
[0033] 在本发明的一个实施例中,如图3所示,提出了一种认证方法,所述方法包括如下步骤:
[0034] S301,触发第一认证终端的定向鉴权处理,以使得第一认证终端发起注册验证,并在验证成功时获取激活码;
[0035] 在认证过程中,用户所使用的终端需要通过触发的方式使第一终端启动鉴权操作。触发鉴权操作的可以是基于扫描特定的二维码,也可以是基于蓝牙、WIFI的配对验证或者无线网认证等等。当用户终端完成触发操作之后,第一认证终端即开启向后台服务器的注册验证。后台服务器会记录设备的序列号(SN)等信息,如果第一认证终端与服务器所记录的内容相互匹配,则通过验证;在验证成功之后,后台服务器会向第一认证终返回激活码(Activity Code)
[0036] S302,对所述第一认证终端的签名进行验证,根据验证结果提交授权申请;以使得所述在授权申请完成后,触发第一认证终端的激活申请。
[0037] 用户端还向后台服务器申请签名验证,在签名验证通过之后,后台服务器会从第一认证终端的云服务器处异步获取到永久授权码。并将永久授权码发送给第一认证终端。第一认证终端会在接收到永久授权码之后,触发激活指令,向后台服务器发起激活申请。如果此时第一认证终端与后台之间的网络断开,则通过接收到的激活码以轮询的方式请求激活。若激活成功,则后台服务器向第一认证终端发送登录凭证,第一认证终端使用凭证登录后台服务器。
[0038] 综上,基于本实施例的技术方案,能够实现认证终端与后台服务器之间的激活和认证完成。保证第一认证终端的认证数据能够被后台服务器接收和处理。
[0039] 在本发明的一个实施例中,如图4(a)所示,提出了一种认证方法,所述方法包括如下步骤:
[0040] S401,第二认证终端触发第一认证终端的定向鉴权处理,以使得第一认证终端发起注册验证,并在验证成功时获取激活码。
[0041] 本步骤中,第二认证终端是指用户所使用的终端,能够基于人机接口实现对于用户输入的接收和响应,同时可以将接收到的数据展示给用户,其包括但是不限于手持设备、移动终端、可穿戴设备等等。在认证过程中,用户所使用的终端需要通过触发的方式使第一终端启动鉴权操作。触发鉴权操作的可以是基于扫描特定的二维码,也可以是基于蓝牙、WIFI的配对验证或者无线网认证等等。当用户终端完成触发操作之后,第一认证终端即开启向后台服务器的注册验证。后台服务器会记录设备的序列号(SN)等信息,如果第一认证终端与服务器所记录的内容相互匹配,则通过验证;在验证成功之后,后台服务器会向第一认证终返回激活码(Activity Code)
[0042] 步骤S401可能包括如下子步骤:
[0043] 获取第一认证终端的序列号和设备签名,同时触发第一认证终端的定向鉴权码。
[0044] S402,第二认证终端对所述第一认证终端的签名进行验证,根据验证结果提交授权申请;以使得所述在授权申请完成后,触发第一认证终端的激活申请。
[0045] 用户端还向后台服务器申请签名验证,在签名验证通过之后,后台服务器会从第一认证终端的云服务器处异步获取到永久授权码。并将永久授权码发送给第一认证终端。第一认证终端会在接收到永久授权码之后,触发激活指令,向后台服务器发起激活申请。如果此时第一认证终端与后台之间的网络断开,则通过接收到的激活码以轮询的方式请求激活。若激活成功,则后台服务器向第一认证终端发送登录凭证,第一认证终端使用凭证登录后台服务器。
[0046] 在经过了上述步骤之后,后台服务器相当于将第一认证终端和第二认证终端进行了绑定,二者均可以进行认证操作,并且第一认证终端和第二认证终端的认证数据经过后台服务器汇总之后,最终可以通过第二认证终端的人机接口展示给用户。
[0047] 步骤S402可能包含如下子步骤:
[0048] S4021,第二认证终端发送第一认证终端签名;
[0049] S4022,第二认证终端接收返回的签名验证结果;
[0050] S4023,当签名成功时,第二认证终端提交授权申请。
[0051] 在一个具体的实施例中,第一认证终端和第二认证终端以互斥的方式进行认证,即如果以第一认证终端进行认证,则无法以第二认证终端的方式进行认证。
[0052] 在步骤S401之前,还包括步骤S400,第二认证终端与所述第一认证终端进行配对验证。步骤S400可以包含如下子步骤,如图4(b)所示:
[0053] 步骤S4001,第二认证终端接收来自第一认证终端的序列号和第一非重复随机码。
[0054] 这个步骤中,第二认证终端会随机产生一个随机码,称为第一非重复随机码。第一认证终端也会随机产生一个随机码,称为第二非重复随机码,这两个随机码需要足够随机,以减少不同会话之间的冲突概率。
[0055] 在具体的实施例中,第一和第二非重复随机码要满足2^64的随机空间。
[0056] 步骤S4002,第二认证终端生成与所述第一非重复随机码一致的第二签名。
[0057] 在本步骤中,第二认证终端会根据第一非重复随机码生成第二签名,为了防止重放攻击,第二签名必须跟当前会话的第一非重复随机码一致。
[0058] 在一个可选的实施例中,第二客户端可以使用例如如下签名算法来实现第二签名的生成:
[0059] HMAC_SHA1(sort(Sn,string(server_nonce),"handshake"))。
[0060] 签名计算是基于一种0知识的挑战应答方式,可以对抗重放攻击,并无需预先对齐时钟。因为此时设备很可能还没有设置网络,不能跟服务器对齐时间。
[0061] 步骤S4003,第二认证终端向所述第一认证终端发送所述第二签名和第二非重复随机码,以使得所述第一认证终端对所述第二签名进行验证,基于所述第二非重复随机码生成第一签名,并发送所述第一签名。
[0062] 在本步骤中,第一认证终端会根据第二非重复随机码生成第一签名,为了防止重放攻击,第一签名必须跟当前会话的第二非重复随机码一致。
[0063] 在一个可选的实施例中,第一客户端可以使用例如如下签名算法来实现第一签名的生成:
[0064] HMAC_SHA1(sort("wework",string(client_nonce),string(server_nonce),"handshake"))
[0065] 在本步骤中,HMAC_SHA1为带消息认证码的SHA1算法,密钥为预先烧录的secretNo,采用此算法可以有效校验secretNo,并可以防篡改以及抵抗长度扩展攻击。
[0066] 第一认证终端需要server_nonce,client_nonce参与计算,而第二认证端仅需要使用server_nonce参与计算,签名算法有所区分,这样可以有效抵御并行会话攻击。
[0067] 步骤S4004,第二认证终端接收并验证所述第一签名;
[0068] 步骤S4005,当所述第一签名验证成功时,第二认证终端向第一认证终端发送会话密钥,并接收所述第一认证终端的会话密钥。
[0069] 双方验证成功相当于完成了一次握手操作,握手成功后,双方交换会话密钥,后续数据交互经过AES加密。
[0070] 在一个可选的实施例中,步骤S400中,第一和第二认证终端之间约定使用蓝牙包的方式:第二认证终端首先将信息模拟成流(即stream,输入输出流),如此可以传输无限长度的数据,同时保证双工通信读写可以并发,互不干扰。由于蓝牙无法传输无限长度的数据,因此,定义一个规范:第二认证终端需暴露两个特征值(Characteristics):Write特征值,Indication特征值。蓝牙设备从Write特征值接受数据,从Indication特征值发送数据。在此,将一个特征值一次传输的数据,称为一帧(不同类型的特征值一次传输的数据长度是不一样的),应用层上的数据包(例如1k大小),会分散成许多帧来传输。蓝牙设备写过程包括:分帧:由于一个特征值长度有限(如20个字节),显然需要分多次才能传输完成。1k数据,要分成1024字节/20字节=51个帧。剩下的4个字节,不足一帧(20个字节),需补齐为一帧并对剩下的16个字节赋0。总共是52帧。发送第一个帧:把第一个帧的内容放入特征值里面。然后通知手机读取数据,通知有两种方式,Indication和notify,这里使用Indication方式,即带响应的通知。当通知完成的时候,可以认为手机已经读完数据。这就完成了发送第一个帧。按照发送第一个帧的步骤,依次发送剩下的帧。设备读过程:当设备发现读特征值收到数据的时候,就接收数据,并追加到设备的buf里。设备必须等用户端订阅了Characteristics之后,才能indicate数据,否则会造成设备发送数据丢失的问题。
[0071] 与通常协议不同的是,本实施例还对前述的协议过程进行改写,通过开放底层的蓝牙接口(例如jsapi),由html5页面实现数据流的模拟,后续是可以支持任意的数据协议,而app无需做任何修改。
[0072] 上述配对流程关键步骤为如何确认双方的身份,利用非重复随机码完成了一次握手操作。
[0073] 在步骤S402之后,还可以包含如下步骤:
[0074] 步骤S403,在所述第一认证终端的激活申请完成之后,将采集到的第二认证数据发送至后台服务器;所述后台服务器用于接收所述第二认证数据,并将所述第二认证数据变换为可扩展的序列化数据结构。所述后台服务器还用于拉取第一认证终端的第一认证数据,将所述第一认证数据变换为可扩展的序列化数据结构。
[0075] 综上所述,基于本实施例的技术方案,能够实现认证终端与后台服务器之间的激活和认证完成。保证第一认证终端的认证数据能够被后台服务器接收和处理。
[0076] 在本发明的一个实施例中,如图5所示,提供了本实施例的认证方法流程图:
[0077] 第二认证终端(用户设备)接收第一认证终端发送的设备的序列号(Sn)和设备签名,同时触发第一认证终端的定向鉴权。触发定向鉴权可以通过扫描第一认证终端的二维码或者通过蓝牙匹配等方式实现。
[0078] 第一认证终端通过网络向后台服务器申请网络注册,后台服务器根据注册请求生成激活码,并向第一认证终端返回激活码。第一认证终端接收激活码后,处于待激活状态。
[0079] 第二认证终端向后台服务器发送第一认证终端的签名,由后台服务器对第一认证终端的签名进行验证,并返回验证结果。第二认证终端接收后台服务器返回的验证结果,在签名成功时,根据用户授权向后台服务器提交激活申请。
[0080] 响应于激活申请,后台服务器向云服务器(第一认证终端的云服务器)发送临时授权码;云服务器向后台服务器返回临时授权状态,当临时授权成功时,第一认证终端服务器异步向后台服务器申请获取永久授权码。
[0081] 当云服务器获取到永久授权码时,后台服务器通知第一认证终端授权完成。第一认证终端向后台服务器发送激活申请;后台服务器根据激活申请向第一认证终端发送激活密钥;第一认证终端根据激活密钥登录后台服务器。
[0082] 综上所述,根据图5所示的实施例,能够实现认证过程中服务器与终端之间的交互、激活与认证。经过上述认证的过程,可以实现第一认证终端与第二认证终端之间数据的互通。
[0083] 在一个可能的实施例中,第二认证终端规定的service uuid(0xFCE7)厂商自定义字段里,包含设备deviceid(随secretNo一起生成并预先烧录)反伪造的广播信号格式:
[0084] 数据包长度为31字节,考虑到部分芯片商预留字段不可修改,自定义数据仅定义21字节,以0xEE表示开始。未绑定时可以不需要广播信号。
[0085] 蓝牙广播包最多只能写入30字节,去除flag和service uuid7个字节,剩下22字节,此方案恰好只需写入29字节,无需额外广播包。
[0086] 广播包每隔一分钟变化一次,sign由特定函数生成,服务端以当前时间(±3分钟)计算合法的sign集合,广播的sign匹配其一则认为是合法的,同时服务器时间根据广播的sign值校准为设备的时间。
[0087] sign生成算法:sign=Hi64Bit(Md5(seed|(timestamp/60)));
[0088] 其中:seed为哈希种子,默认为预先烧录的secretNo,并且后台服务器允许设备联网登陆后刷新seed;timestamp为机器当前时间;60为计算分钟数;|表示字符串拼接;Hi64Bit表示取md5结果的高64位。此方案无需考勤机联网亦可正常工作。因为每分钟更换sign值,并且该签名需要经过企业微信后台校验,可以有效防止蓝牙信号伪造以及重放。当设备时钟出错时,后台服务器的管理员在App中通过蓝牙重置设备时间。
[0089] 在一个可能的实施例中,如图6(a)所示,提供一种认证处理方法,该方法可用于图2(a)所示的系统,所述方法包括如下步骤:
[0090] 步骤S601,获取认证数据。
[0091] 后台服务器通过网络或者通过硬件云拉取来自各个认证终端的认证数据。认证终端可以包括多种形态,例如考勤机、手机终端、PC终端、可穿戴设备等。上述各种形态的认证终端通过网络将获取的认证数据发送至后台服务器。多种形态的认证终端会反馈不同数据结构的认证数据。例如,如果认证终端是传统的指纹或者密码打卡机,那么认证数据结构将包括:打卡者ID、打卡时间;如果认证终端是移动终端,那么认证数据结构将包括:通过移动终端打卡的ID信息,打卡的时间信息,以及移动终端的位置信息;如果利用可穿戴设备进行认证,那么认证数据结构将包括:可穿戴设备的ID,所在地点,认证时间,以及与可穿戴设备绑定的用户信息等等。在服务器获取来自各终端的考勤数据之后,会对认证数据进行暂存。
[0092] 步骤S602,将所述认证数据变换为可扩展的序列化数据结构。
[0093] 所述可扩展的序列化数据结构包括基本数据结构和扩展数据结构,所述基本数据结构至少包括认证位置信息和认证时间信息。
[0094] 由于认证终端的多样化,后台服务器所拉取的认证数据结构也是多样的。同时,由于后台服务器需要大量处理来源于前台认证系统的认证信息,因此对拉取获得的认证数据进行数据结构的变换。这样可以将认证数据变换为服务器容易读取,处理速度更快的统一数据结构。
[0095] 步骤S603,通过预置的验证规则验证所述可扩展的序列化数据结构。
[0096] 在对认证数据的数据结构进行变换之后,后台服务器开启对数据的验证。验证过程可以是将可扩展的序列化数据结构中的数据与验证规则进行比对的过程。
[0097] 验证可以包括认证数据与验证规则的比对验证,比对验证可以是对时间、地理位置的验证。例如用户甲作为A公司的成员,需要在每个工作日的9:00-9:30到达公司。验证规则将包括,用户甲的ID需要在9:00-9:30的时间范围内,在A公司的位置坐标完成一次认证。验证过程就需要满足用户甲的认证数据是否满足时间信息和位置信息,并对验证结果进行记录。当然,对于时间、地点验证是一种最简单的验证方式。
[0098] 验证可以包括对于验证规则的适配,例如用户乙是B公司的成员,但是乙需要在每周的周一、周三在B1工作地点,周二、周四、周五在B2工作地点,此时,就是用户乙就适配两个规则,B1规则和B2规则。在对验证规则适配过程中,存在规则冲突的情况。例如,B1规则设定为乙需要在每周的周一、周三、周五在B1工作地点认证,B2规则设定为乙需要在每周的周二、周四、周五在B1工作地点认证;那么,B1规则和B2规则在时间上就产生了冲突,验证过程就包含了B1规则和B2规则之间的规则冲突,其中周五作为两个规则冲突的打卡时间产生了规则矛盾。此时需要返回错误数据,通过对验证规则的修正,解决二者之间的矛盾。
[0099] 除了时间适配冲突之外,还存在组群匹配冲突。组群匹配冲突是由于在对成员分配规则时,是以组群的方式进行分配的,成员丙为C群组(例如,C群组是软件研发组),而同时成员丙又被分类于D群组(例如,D群组归类于产品维护组)。而C群组和D群组由于属于不同的业务部分而产生组群适配冲突,因此验证可扩展的序列化数据结构所在的群组之后,还包括返回正确的群组规则。
[0100] 验证可扩展的序列化数据结构还包括对认证数据真实性的追溯。随着技术的发展,例如技术进行作弊验证屡见不鲜。例如,在终端验证的过程中,利用虚拟GPS技术,虚拟移动终端的位置,进行打卡作弊。对认证数据的真实性追溯可以通过验证终端与验证地点的热点进行验证码交互实现,即在进行位置验证时,需要附加本地热点发送的一个验证码,实现对于真实定位位置的绑定。
[0101] 步骤S604,返回所述验证结果。
[0102] 在一个可选的实施例中,步骤S202,将所述认证数据的数据结构变换为可扩展的序列化数据结构,包括:
[0103] 可扩展的序列化数据结构通过写入结构(Writer)和读出结构(Reader),将来自不同认证终端的、不同数据类型的数据提取、并写入到固定的数据结构中,以此实现数据结构的转换。对于数据的提取包括搜索数据结构中特定字段,提取特定字段的内容,将提取的字段内容写入到可扩展的序列化数据结构中,对可扩展的序列化数据结构中的内容进行更新。例如,如图6(b)所示,通过GET()函数提取来自认证数据中关于认证时间的字段,以及认证数据中关于认证地点的字段,然后将这个字段写入到可扩展的序列化数据结构。图6(b)中,一条来自认证终端的数据所记录的信息包括认证日期(Date),认证时间(Time),认证地点(Position),在数据结构变化过程中,首先在在认证信息中搜索并提取上述字段,例如,提取日期字段、认证时间字段,然后将提取的内容写入到可扩展的序列化数据结构,从而获得一条以可扩展的序列化数据结构形式重构的认证信息记录。当然,实施例中GET()函数获取认证数据仅仅是一种示例性的手段,该步骤亦可以通过其他获取数据的手段完成。示例性的,可扩展的序列化数据结构,使用多维数据进行存储,以时间为例,二维数组的一维用于存储日期数据,二维数组的另一维用于存储时间数据。以位置为例,二维数据的一维用于存储经纬度标识,另一维用于存储经纬度数值。因为在可扩展的序列化数据结构中,更多的是考虑验证二维数组的某一维信息,利用该方式可以减少查询时的查询参数,从而提高查询的效率。例如在原数据结构中,如果需要查询时间(Time)信息,遍历过程中总是需要遍历到日期(date)信息,并且进行一次判断,而在可扩展的序列化数据结构中,二维数组的形式为A[date,time],遍历过程只需要进行A[-,time]的判断,而无需考虑另一维数据,相当于处理一个一维数据。同样的道理,对于位置的判断B[E,120.4300045967]是不考虑第一维数据的。
[0104] 在一个可选的实施例中,图6(c)所示,数据结构的重构过程,还包括对原有认证信息的筛选步骤,例如在通过GET()函数获取到认证日期(Date),认证时间(Time),认证地点(Position)地点之后,进行筛选和检查操作(Check),筛选可以是非空筛选、飞点筛选等。非空筛选,是指判断GET()函数的提取结果是否为空(NULL),如果提取结果为空,则需要重复对数据的提取或者丢弃数据并报错。对认证数据的筛选还可以包括对认证时间进行飞点筛选。飞点筛选是指,检验明显偏离时间轨迹的认证数据,或者检验明显偏离位置轨迹的认证数据。
[0105] 在一个可选的实施例中,如图6(d)所示,数据结构的重构过程,还包括基于数据库对地点信息进行查询。例如,认证信息中并没有包含认证的经纬度信息,而是包括了认证硬件的机器代码,或者认证编号。此时通过数据库查询位置信息,并将位置信息写入到可扩展的序列化数据结构中。例如,认证端的验证数据是机器码N0.95267,而可扩展的序列化数据结构需要写入的数据是经纬度数据,此时,需要通过机器码对经纬度数据进行查询,返回机器码数据,并将机器码数据写入到可扩展的序列化数据结构。
[0106] 在一个可选的实施例中,如图6(e)和6(f)所示,可扩展的序列化数据结构还包含一个验证字段,验证字段用于作为验证位置的标识。图6(e)展示了一种复杂地形验证信息的过程,不同用户分别在同一建筑的不同楼层进行验证,并且不同的楼层可能使用不同的验证方式。例如图6(e)中的A楼层(A Floor)和C楼层(C Floor)用户使用固定验证终端进行验证,而B楼层(B Floor)用户使用移动终端进行验证。在这种复杂地形下,三个用户验证的地理坐标是相同的,如果在进行数据结构验证时不加以区分会造成数据的混淆。因此,需要对于该种验证通过验证字段的附加信息作为验证位置的标识。验证字段可以存储验证设备的机器码,例如认证端的机器码N0.95267,那么验证字段的信息就记录该机器码N0.95267。对于转换完毕的可扩展的序列化数据,通过验证字段(FC)的内容加以区分,例如图6(f)中,Floor A的FC字段记为A,其内容还包括N0.95267的机器码,当然,FC验证字段可以是一个复杂的多维数组,数组的各个维度记录多维的验证信息,通过多维比较以实现对于验证位置的标识。
[0107] 综上所述,图6(a)-6(f)所展示的方法能够将各个终端返回的认证数据进行重构,并且基于预定规则对验证数据进行验证。基于数据结构的重构,能够对原始数据信息进行重新分类,大大提高数据的统一性。利用可扩展的序列化数据结构的可扩展特点,可以适应来自多个终端的多种多样的原始数据。利用多维数组存储数据,能够提高数据的存储效率和查询速度。
[0108] 在本发明一个可选的实施例中,提供一种认证处理装置,所述装置用于执行的前述步骤S400-S404所述的方法。所述装置包含如下单元:触发单元,用于触发第一认证终端的定向鉴权处理,以使得第一认证终端发起注册验证,并在验证成功时获取激活码;验证单元,用于对所述第一认证终端的签名进行验证,根据验证结果提交授权申请;以使得所述在授权申请完成后,触发第一认证终端的激活申请。本实施例提供的装置,可以安装于移动终端中,从而保证移动终端与认证终端绑定之后,可以通过后台服务器获取认证终端获得的认证数据,从而实现了用户通过移动终端就可以实时更新用户的打卡认证信息。用户还可以通过移动终端向后台服务器申请补充或者更正打卡认证信息。进一步地,用户可以在用户端的APP进行打卡认证,通常情况下在认证终端与在用户端的打卡认证是相互排斥的,并且二者的数据格式也不相同。可以通过数据格式转换使该二者的数据进行融合。该装置可以集成在企业管理客户端中,通过对用户认证信息的管理实现对于诸如考勤、绩效的管理。该装置的还可以与企业用户的任务相关联,基于打卡认证数据实现任务的派发。
[0109] 在本发明一个可选的实施例中,提供一种认证处理装置,所述装置用于执行的前述步骤S301-S302所述的方法。所述装置包含如下单元:触发单元,用于触发第一认证终端的定向鉴权处理,以使得第一认证终端发起注册验证,并在验证成功时获取激活码;验证单元,用于对所述第一认证终端的签名进行验证,根据验证结果提交授权申请;以使得所述在授权申请完成后,触发第一认证终端的激活申请。
[0110] 所述装置还配对验证单元,用于与所述第一认证终端进行配对验证,其包括:序列号和随机码接收子单元,用于接收来自第一认证终端的序列号和第一非重复随机码;签名生成子单元,用于生成与所述第一非重复随机码一致的第二签名;随机码发送子单元,用于向所述第一认证终端发送所述第二签名和第二非重复随机码,以使得所述第一认证终端对所述第二签名进行验证,基于所述第二非重复随机码生成第一签名,并发送所述第一签名;签名接收子单元,用于接收并验证所述第一签名;密钥交换子单元,用于当所述第一签名验证成功时,向第一认证终端发送会话密钥,并接收所述第一认证终端的会话密钥。
[0111] 触发单元包括:获取子单元,用于获取第一认证终端的序列号和设备签名,同时触发第一认证终端的定向鉴权码。
[0112] 验证单元包括:发送子单元,用于发送第一认证终端签名;接收子单元,用于接收返回的签名验证结果;
[0113] 申请提交子单元,用于当签名成功时,提交授权申请。
[0114] 所述装置还包括:认证数据发送单元,用于在所述第一认证终端的激活申请完成之后,将采集到的第二认证数据发送至后台服务器;所述后台服务器用于接收所述第二认证数据,并将所述第二认证数据变换为可扩展的序列化数据结构。
[0115] 请参考图9,其示出了本发明一个实施例提供执行主体的结构示意图。该用户端用于执行前述认证终端的认证方法。具体来讲:
[0116] 终端(执行主体)1100可以包括RF(Radio Frequency,射频)电路1110、包括有一个或一个以上计算机可读存储介质的存储器1120、输入单元1130、显示单元1140、视频传感器1150、音频电路1160、WiFi(wireless fidelity,无线保真)模块1170、包括有一个或者一个以上处理核心的处理器1180、以及电源990等部件。本领域技术人员可以理解,图9中示出的终端结构并不构成对终端的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
[0117] 存储器1120可用于存储软件程序以及模块,处理器1180通过运行存储在存储器1120的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器1120可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据终端1100的使用所创建的数据(比如视频数据、电话本等)等。此外,存储器1120可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器1120还可以包括存储器控制器,以提供处理器1180和输入单元1130对存储器1120的访问。
[0118] 输入单元1130可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。具体地,输入单元1130可包括图像输入设备1131以及其他输入设备1132。图像输入设备1131可以是摄像头,也可以是光电扫描设备。除了图像输入设备1131,输入单元1130还可以包括其他输入设备1132。具体地,其他输入设备1132可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆等中的一种或多种。
[0119] 显示单元1140可用于显示由用户输入的信息或提供给用户的信息以及终端1100的各种图形用户接口。
[0120] 处理器1180是终端1100的控制中心,利用各种接口和线路连接整个手机的各个部分,通过运行或执行存储在存储器1120内的软件程序和/或模块,以及调用存储在存储器1120内的数据,执行终端1100的各种功能和处理数据,从而对手机进行整体监控。可选的,处理器1180可包括一个或多个处理核心;优选的,处理器1180可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。
[0121] 可以理解的是,上述调制解调处理器也可以不集成到处理器1180中。
[0122] 终端1100还包括给各个部件供电的电源990(比如电池),优选的,电源可以通过电源管理系统与处理器1180逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。电源990还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
[0123] 请参考图10,其示出了本发明一个实施例提供的服务器的结构示意图。该服务器用于实施上述实施例中提供的后台服务器侧的认证方法。具体来讲:
[0124] 所述服务器1200包括中央处理单元(CPU)1201、包括随机存取存储器(RAM)1202和只读存储器(ROM)1203的系统存储器1204,以及连接系统存储器1204和中央处理单元1201的系统总线1205。所述服务器1200还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(I/O系统)1206,和用于存储操作系统1213、应用程序1214和其他程序模块1215的大容量存储设备1207。
[0125] 所述基本输入/输出系统1206包括有用于显示信息的显示器1208和用于用户输入信息的诸如鼠标、键盘之类的输入设备1209。其中所述显示器1208和输入设备1209都通过连接到系统总线1205的输入输出控制器1210连接到中央处理单元1201。所述基本输入/输出系统1206还可以包括输入输出控制器1210以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器1210还提供输出到显示屏、打印机或其他类型的输出设备。
[0126] 所述大容量存储设备1207通过连接到系统总线1205的大容量存储控制器(未示出)连接到中央处理单元1201。所述大容量存储设备1207及其相关联的计算机可读介质为服务器1200提供非易失性存储。也就是说,所述大容量存储设备1207可以包括诸如硬盘或者CD-ROM驱动器之类的计算机可读介质(未示出)。
[0127] 不失一般性,所述计算机可读介质可以包括计算机存储介质和通信介质。计算机存储介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括RAM、ROM、EPROM、EEPROM、闪存或其他固态存储其技术,CD-ROM、DVD或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知所述计算机存储介质不局限于上述几种。上述的系统存储器1204和大容量存储设备1207可以统称为存储器。
[0128] 根据本发明的各种实施例,所述服务器1200还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即服务器1200可以通过连接在所述系统总线1205上的网络接口单元1211连接到网络1212,或者说,也可以使用网络接口单元1211来连接到其他类型的网络或远程计算机系统(未示出)。
[0129] 所述存储器还包括一个或者一个以上的程序,所述一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行。上述一个或者一个以上程序包含用于执行上述后台服务器侧的方法的指令。
[0130] 在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由终端的处理器执行以完成上述方法实施例中发送方客户端或接收方客户端侧的各个步骤,或者上述指令由服务器的处理器执行以完成上述方法实施例中后台服务器侧的各个步骤。例如,所述非临时性计算机可读存储介质可以是ROM、随机存取存储器(RAM)、CD-ROM、磁带、软盘和光数据存储设备等。
[0131] 应当理解的是,在本文中提及的“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
[0132] 上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
[0133] 本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
[0134] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。