一种基于跨平台加密算法与声明式过滤认证的平台认证方法及系统与流程

文档序号:15594561发布日期:2018-10-02 19:21阅读:142来源:国知局

本发明涉及一种认证技术,具体地说是一种基于跨平台加密算法与声明式过滤认证的平台认证方法及系统。



背景技术:

目前,随着互联网+的深入发展,软件系统已经深入到各个行业的不同场景之中,伴随而来的是不同系统之间的联系越发紧密。因此,各种云平台、组合系统、单点登录服务等应运而生,同平台系统间与系统间的通讯也越发频繁,从而对通讯的安全性和可靠性的要求就越发的高。其中,所述服务是指将原有的单体软件系统拆分为不同的功能组件,通过服务间的契约依赖关系,彼此通讯形成完整的系统应用,统一平台下的服务可以彼此间通信,也可以与平台外的非授信服务进行通讯,例如浏览器软件端、安卓系统软件端、苹果系统软件端、客户机系统软件端等。但是不管是哪种通讯模式,在获取执行通讯请求前,确保请求的安全性、可靠性都是必要的前提。

目前,现有技术中对于跨平台统一认证需求来说,通常使用单点登录解决方案,且认证系统需要一个认证服务端,且该服务端必须是独立部署的浏览器应用;所述服务端主要负责对用户的认证工作,与数据库交互并认证结束后以重定向的方式跳转至对应请求画面。认证客户端与系统客户端应用共同部署,以过滤的方式对受保护的资源进行认证保护。对于访问受保护资源的每个请求,客户端都会分析请求参数中是否包含用户凭证,如果没有,则进行客户端认证或服务端认证;通常在实际应用场景中,单点登录需要和权限控制框架结合使用,以apacheshiro(java安全框架)为例。安全框架使用用户会话缓存用户认证信息,也就表示客户端需要存储用户状态缓存。客户端安全框架使用缓存信息进行请求认证,同时提供了一组声明接口,可以对接口进行权限验证描述,由拦截器进行权限验证,通过后进行接口访问。

综上可知,对于跨平台统一认证需求来说,需要一个独立部署的认证服务端,那么这对于跨地域的分布式部署方案就存在,认证服务端部署方式固定,网络约束性强,负载均衡或分布式方案复杂的问题。同时还存在客户端在结合权限控制框架时需要保存用户状态,缓存用户权限信息,不支持无状态会话;客户端接口之间通讯,没有对应的安全认证策略,只能将用户信息互相传递,等弊端。



技术实现要素:

鉴于现有技术存在的弊端,本发明提供了一种基于跨平台加密算法与声明式过滤认证的平台认证方法及系统,以有效解决背景技术中所提及的技术问题。

一种基于跨平台加密算法与声明式过滤认证的平台认证方法,包括如下步骤:

s1、客户端构建与所述服务器客户端相匹配的用户状态数据结构并向服务客户端发送接口请求,所述用户状态数据结构用于预先为s3中过滤认证过程提供所需的用户状态信息,并与接口请求中的请求参数一起被整合成数据包向服务器客户端发送,所述请求参数被写入有供服务器客户端认证使用的认证秘钥以及服务秘钥;所述用户状态信息至少包括用户权限凭证、用户基本信息以及权限数据,所述用户权限凭证用于在无状态会话条件下获取用户登陆状态唯一标识即用户状态信息的关键词;所述权限数据包括角色编码数据与资源权限编码数据;

s2、服务客户端收到来自客户端的接口请求;

s3、根据所设定的认证注解声明,触发服务客户端内对应的前置过滤器对接口请求中的请求参数进行过滤认证并判断客户端是否为平台内所属的授信客户端,是则执行s4,否则执行s5;所述认证注解声明用于基于请求接口所对应的注解认证标签确认前置过滤器所需执行的过滤认证算法,所述注解认证标签具有多种标签属性,每一种标签属性对应一种被预置在前置过滤器中的过滤认证算法,且每一所述请求接口均各自对应某一属性的注解认证标签;所述注解认证标签依据接口认证需求被定义为下述几种属性:其包括但不限于授信服务认证标签、游客认证标签、已登入认证标签、角色认证标签以及权限认证标签;

s4、若注解认证标签的标签属性属于授信服务认证标签,则确认为授信客户端并执行授信服务认证标签所对应的过滤认证过程,并在过滤认证成功后执行接口并返回结果;

s5、若注解认证标签的标签属性属于非授信服务认证标签,则确认为非授信客户端并执行非授信服务认证标签所对应的过滤认证过程,并在过滤认证成功后执行接口并返回结果,所述非授信服务认证标签包括但不限于游客认证标签、已登入认证标签、角色认证标签以及权限认证标签。

进一步的,所述授信服务认证标签所对应的过滤认证算法包括如下步骤:

(11)、获取请求参数中的认证秘钥并判断所述请求参数是否为空,是则抛出异常认证失败,否则进行下一步;

(12)、自所设定的接口参数字典中获取对应的服务编码并删除所述认证秘钥的属性信息;

(13)、基于授信服务端令牌解密算法,对所述认证秘钥进行解密以获得解密后的客户端的服务编码;

(14)、判断所述服务编码是否为空,是则抛出异常认证失败,否则进行下一步;

(15)、判断所述服务编码是否存在于所设定的本地授信服务注册表中,否则抛出异常认证失败;

(16)、确定请求接口所对应的注解认证标签的属性,即允许通过的服务编码数组;

(17)、若服务编码数组的数组长度为0,则确定为任何授信服务都可以认证通过;

(18)、循环步骤(16)中的服务编码数组,并判断是否存在与步骤(13)的客户端的服务编码相同的值,是则确认认证通过,否则抛出异常认证失败。

进一步的,所述的非授信服务认证标签所对应的过滤认证过程包括:游客认证标签所对应的过滤认证算法、已登入认证标签所对应的过滤认证算法、角色认证标签所对应的过滤认证算法以及权限认证标签所对应的过滤认证算法;

其中,所述游客认证标签所对应的过滤认证算法包括如下步骤:

(21)、获取请求参数中的服务秘钥;

(22)、自所设定的接口参数字典中获取对应的服务编码实例并删除所述服务秘钥的属性信息;

(23)、判断所述服务秘钥是否为空,不空则执行授信服务端令牌解密算法,获得解密后的客户端的服务编码;

(24)、判断所述服务编码是否为空,不空则判断所述服务编码是否存在于所设定的本地授信服务注册表中,若存在,则认证通过并终止;

(25)、所述服务编码为空,则获取请求参数中的认证秘钥;

(26)、基于非授信服务端令牌解密算法,对所述认证秘钥进行解密以获得解密后的认证信息;

(27)、判断所述认证信息是否为空或不包含动态凭证属性,则通过认证并终止;否则,抛出异常认证失败。

进一步的,所述已登入认证标签所对应的过滤认证算法包括如下步骤:

(31)、获取请求参数中的服务秘钥;

(32)、自所设定的接口参数字典中获取对应的服务编码实例并删除所述认证秘钥的属性信息;

(33)、判断所述服务秘钥是否为空,不空则执行授信服务端令牌解密算法,获得解密后的客户端的服务编码;

(34)、判断所述服务编码是否为空,不空则判断所述服务编码是否存在于所设定的本地授信服务注册表中,若存在,则认证通过并终止;

(35)、所述服务编码为空,则获取请求参数中的认证秘钥;

(36)、基于非授信服务端令牌解密算法,对所述认证秘钥进行解密以获得解密后的认证信息;

(37)、判断认证信息是否为空,不空且认证信息包含动态凭证属性,则通过认证并终止;否则,抛出异常认证失败。

进一步的,所述角色认证标签所对应的过滤认证算法包括如下步骤:

(401)、获取请求参数中的服务秘钥;

(402)、自所设定的接口参数字典中获取对应的服务编码实例并删除所述认证秘钥的属性信息;

(403)、判断所述服务秘钥是否为空,不空则执行授信服务端令牌解密算法,获得解密后的客户端的服务编码;

(404)、判断所述服务编码是否为空,不空则判断所述服务编码是否存在于所设定的本地授信服务注册表中,若存在,则认证通过并终止;

(405)、所述服务编码为空,则获取请求参数中的认证秘钥;

(406)、基于非授信服务端令牌解密算法,对所述认证秘钥进行解密以获得解密后的认证信息;

(407)、判断认证信息是否为空,是则抛出异常认证失败;

(408)、获取认证信息所对应的对象的角色数组的属性;

(409)、确定请求接口所对应的注解认证标签的属性,即允许通过的角色编码数组;

(410)、获取请求接口所对应的注解认证标签的逻辑条件属性,

(411)、若所述逻辑条件属性值为“并且”,则循环步骤(408)的标签角色数组与步骤(409)的用户角色数组,同时若任意一个标签角色均不存在于用户角色数组中,则抛出异常认证失败;

(412)、若所述逻辑条件属性值为“或者”,则循环步骤(408)的标签角色数组与步骤(409)的用户角色数组,同时若没有一个标签角色与用户角色数组中的值一致,则抛出异常认证失败;否则,认证通过。

进一步的,所述权限认证标签所对应的过滤认证算法包括如下步骤:

(501)、获取请求参数中的服务秘钥;

(502)、自所设定的接口参数字典中获取对应的服务编码实例并删除所述认证秘钥的属性信息;

(503)、判断所述服务秘钥是否为空,不空则执行授信服务端令牌解密算法,获得解密后的客户端的服务编码;

(504)、判断所述客户端服务编码是否为空,不空则判断所述服务编码是否存在于所设定的本地授信服务注册表中,若存在,则认证通过并终止;

(505)、所述服务编码为空,则获取请求参数中的认证秘钥;

(506)、基于非授信服务端令牌解密算法,对所述认证秘钥进行解密以获得解密后的认证信息;

(507)、判断认证信息是否为空,是则抛出异常认证失败;

(508)、获取认证信息所对应的对象的权限数组属性;

(509)、确定请求接口所对应的注解认证标签的属性,即允许通过的权限编码数组;

(510)、获取请求接口所对应的注解认证标签的逻辑条件属性,

(511)、若所述逻辑条件属性值为“并且”,则循环步骤(508)的标签角色数组与步骤(509)的用户角色数组,同时若任意一个标签权限与用户权限匹配,则抛出异常认证失败;

(512)、若所述逻辑条件属性值为“或者”,则循环步骤(508)的标签角色数组与步骤(509)的用户角色数组,同时若没有一个标签权限与用户权限匹配,则抛出异常认证失败;否则,认证通过。

进一步的,所述授信服务端令牌解密算法即对秘钥令牌参数进行解密的解密方法包括如下步骤:

i1、将预置的动态参数字典作为初始化参数,并获得其所述有序参数字典;

i2、对所述有序参数字典进行字符串转换,得到参数字符串;

i3、对所述参数字符串进行非对称加密,获得参数密文;

i4、对所述参数密文进行字节数组转换,得到参数密文字节数组;

i5、对所述秘钥令牌参数进行解码,得到秘钥令牌字节数组;

i6、使用所述参数密文字节数组对所述秘钥令牌字节数组进行对称算法解密,得到服务编号字节数组;

i7、对服务编号字节数组进行字符串转换,得到服务编号;

所述非授信服务端令牌解密算法包括如下步骤:

ii01、调用所设定的第一参数模块获取接口请求动态参数以形成第一参数,调用所设定的第二参数模块获取用户权限凭证以形成第二参数,其中,所述接口请求动态参数由所述非授信客户端提供,所述用户权限凭证自所述用户权限信息中提取出;

ii02、对所述第一参数的属性顺序进行排序并进行字符串转化以得到参数字符串;

ii03、对所述参数字符串进行非对称加密并自所述参数字符串中截取一定长度的字符串作为秘钥参数,其字符串长度至少大于7;

ii04、获取秘钥插入位置以及秘钥长度,其中所述秘钥插入位置通过截取第四参数中1至2索引位字符并转换为整数数字获得,所述秘钥长度通过截取第四参数中4至5索引位字符并转换为整数数字获得;

ii05、获取新的秘钥参数即通过截取第二参数中索引位7至字符串最后一位的索引位字符;

ii06、截取ii05中的新的秘钥参数以获得认证秘钥,其对应的截取位置依据所述秘钥插入位置确定,截取长度为ii04中的秘钥长度;

ii07、获得认证参数密文,即自ii05的秘钥参数中删除包含所述认证秘钥所对应的参数;

ii08、对秘钥参数进行字节数组转换以获得认证密文字节数组,对应的转换方法采用字节编码utf-8;

ii09、对认证秘钥进行base64解码,获得参数密文字节数组;

ii10、对所述认证密文字节数组进行对称算法解密并使用所述参数密文字节数组作为参数盐以获得认证信息字节数组;

ii11、对所述认证信息字节数组进行字符串转换获得认证信息字符串并进行json对象实例转换进而获得认证信息,对应的转换方法采用字节编码utf-8;

ii12、自所述认证信息中获取用户权限凭证参数即用户动态凭证以及动态时间戳即根据系统当前时间生成的字符串;

ii13、合并所述用户动态凭证以及动态时间戳所对应的字符串,并进行非对称加密以获得加密字符串;

ii14、对所述加密字符串再次进行非对称加密并自第一位字符开始截取加密后的一定长度的字符串以获得随机秘钥;

ii15、比较随机秘钥以及认证秘钥是否相同,是则认证通过并删除在第二参数中时间戳并返回更改后的第二参数;否则返回空,表示认证解密失败。

本发明还要提供一种基于跨平台加密算法与声明式过滤认证的平台认证系统,其特征在于,包括:

用户状态数据结构建立单元,用于为客户端构建与所述服务器客户端相匹配的用户状态数据结构,所述用户状态数据结构用于预先为服务客户端的过滤认证过程提供所需的用户状态信息,并与接口请求中的请求参数一起被整合成数据包向服务器客户端发送,所述请求参数被写入有供服务器客户端认证使用的认证秘钥以及服务秘钥;所述用户状态信息至少包括用户权限凭证、用户基本信息以及权限数据,所述用户权限凭证用于在无状态会话条件下获取用户登陆状态唯一标识即用户状态信息的关键词;所述权限数据包括角色编码数据与资源权限编码数据;

服务客户端,用于收到来自客户端的接口请求,并根据所设定的认证注解声明,触发服务客户端内对应的前置过滤器对接口请求中的请求参数进行过滤认证;所述认证注解声明用于基于请求接口所对应的注解认证标签确认前置过滤器所需执行的过滤认证算法,所述注解认证标签具有多种标签属性,每一种标签属性对应一种被预置在前置过滤器中的过滤认证算法,且每一所述请求接口均各自对应某一属性的注解认证标签;所述注解认证标签依据接口认证需求被定义为下述几种属性:其包括但不限于授信服务认证标签、游客认证标签、已登入认证标签、角色认证标签以及权限认证标签;服务客户端还用于同时判断客户端是否为平台内所属的授信客户端,若注解认证标签的标签属性属于授信服务认证标签,则确认为授信客户端并执行授信服务认证标签所对应的过滤认证过程,并在过滤认证成功后执行接口并返回结果;若注解认证标签的标签属性属于非授信服务认证标签,则确认为非授信客户端并执行非授信服务认证标签所对应的过滤认证过程,并在过滤认证成功后执行接口并返回结果,所述非授信服务认证标签包括但不限于游客认证标签、已登入认证标签、角色认证标签以及权限认证标签。

进一步的,所述授信服务认证标签所对应的过滤认证算法包括如下步骤:

(11)、获取请求参数中的认证秘钥并判断所述请求参数是否为空,是则抛出异常认证失败,否则进行下一步;

(12)、自所设定的接口参数字典中获取对应的服务编码并删除所述认证秘钥的属性信息;

(13)、基于授信服务端令牌解密算法,对所述认证秘钥进行解密以获得解密后的客户端的服务编码;

(14)、判断所述服务编码是否为空,是则抛出异常认证失败,否则进行下一步;

(15)、判断所述服务编码是否存在于所设定的本地授信服务注册表中,否则抛出异常认证失败;

(16)、确定请求接口所对应的注解认证标签的属性,即允许通过的服务编码数组;

(17)、若服务编码数组的数组长度为0,则确定为任何授信服务都可以认证通过;

(18)、循环步骤(16)中的服务编码数组,并判断是否存在与步骤(13)的客户端的服务编码相同的值,是则确认认证通过,否则抛出异常认证失败。

进一步的,所述的非授信服务认证标签所对应的过滤认证过程包括:游客认证标签所对应的过滤认证算法、已登入认证标签所对应的过滤认证算法、角色认证标签所对应的过滤认证算法以及权限认证标签所对应的过滤认证算法;

其中,所述游客认证标签所对应的过滤认证算法包括如下步骤:

(21)、获取请求参数中的服务秘钥;

(22)、自所设定的接口参数字典中获取对应的服务编码实例并删除所述服务秘钥的属性信息;

(23)、判断所述服务秘钥是否为空,不空则执行授信服务端令牌解密算法,获得解密后的客户端的服务编码;

(24)、判断所述服务编码是否为空,不空则判断所述服务编码是否存在于所设定的本地授信服务注册表中,若存在,则认证通过并终止;

(25)、所述服务编码为空,则获取请求参数中的认证秘钥;

(26)、基于非授信服务端令牌解密算法,对所述认证秘钥进行解密以获得解密后的认证信息;

(27)、判断所述认证信息是否为空或不包含动态凭证属性,则通过认证并终止;否则,抛出异常认证失败;

所述已登入认证标签所对应的过滤认证算法包括如下步骤:

(31)、获取请求参数中的服务秘钥;

(32)、自所设定的接口参数字典中获取对应的服务编码实例并删除所述认证秘钥的属性信息;

(33)、判断所述服务秘钥是否为空,不空则执行授信服务端令牌解密算法,获得解密后的客户端的服务编码;

(34)、判断所述服务编码是否为空,不空则判断所述服务编码是否存在于所设定的本地授信服务注册表中,若存在,则认证通过并终止;

(35)、所述服务编码为空,则获取请求参数中的认证秘钥;

(36)、基于非授信服务端令牌解密算法,对所述认证秘钥进行解密以获得解密后的认证信息;

(37)、判断认证信息是否为空,不空且认证信息包含动态凭证属性,则通过认证并终止;否则,抛出异常认证失败;

所述角色认证标签所对应的过滤认证算法包括如下步骤:

(401)、获取请求参数中的服务秘钥;

(402)、自所设定的接口参数字典中获取对应的服务编码实例并删除所述认证秘钥的属性信息;

(403)、判断所述服务秘钥是否为空,不空则执行授信服务端令牌解密算法,获得解密后的客户端的服务编码;

(404)、判断所述服务编码是否为空,不空则判断所述服务编码是否存在于所设定的本地授信服务注册表中,若存在,则认证通过并终止;

(405)、所述服务编码为空,则获取请求参数中的认证秘钥;

(406)、基于非授信服务端令牌解密算法,对所述认证秘钥进行解密以获得解密后的认证信息;

(407)、判断认证信息是否为空,是则抛出异常认证失败;

(408)、获取认证信息所对应的对象的角色数组的属性;

(409)、确定请求接口所对应的注解认证标签的属性,即允许通过的角色编码数组;

(410)、获取请求接口所对应的注解认证标签的逻辑条件属性,

(411)、若所述逻辑条件属性值为“并且”,则循环步骤(408)的标签角色数组与步骤(409)的用户角色数组,同时若任意一个标签角色均不存在于用户角色数组中,则抛出异常认证失败;

(412)、若所述逻辑条件属性值为“或者”,则循环步骤(408)的标签角色数组与步骤(409)的用户角色数组,同时若没有一个标签角色与用户角色数组中的值一致,则抛出异常认证失败;否则,认证通过;

所述权限认证标签所对应的过滤认证算法包括如下步骤:

(501)、获取请求参数中的服务秘钥;

(502)、自所设定的接口参数字典中获取对应的服务编码实例并删除所述认证秘钥的属性信息;

(503)、判断所述服务秘钥是否为空,不空则执行授信服务端令牌解密算法,获得解密后的客户端的服务编码;

(504)、判断所述客户端服务编码是否为空,不空则判断所述服务编码是否存在于所设定的本地授信服务注册表中,若存在,则认证通过并终止;

(505)、所述服务编码为空,则获取请求参数中的认证秘钥;

(506)、基于非授信服务端令牌解密算法,对所述认证秘钥进行解密以获得解密后的认证信息;

(507)、判断认证信息是否为空,是则抛出异常认证失败;

(508)、获取认证信息所对应的对象的权限数组属性;

(509)、确定请求接口所对应的注解认证标签的属性,即允许通过的权限编码数组;

(510)、获取请求接口所对应的注解认证标签的逻辑条件属性,

(511)、若所述逻辑条件属性值为“并且”,则循环步骤(508)的标签角色数组与步骤(509)的用户角色数组,同时若任意一个标签权限与用户权限匹配,则抛出异常认证失败;

(512)、若所述逻辑条件属性值为“或者”,则循环步骤(508)的标签角色数组与步骤(509)的用户角色数组,同时若没有一个标签权限与用户权限匹配,则抛出异常认证失败;否则,认证通过。

进一步的,所述授信服务端令牌解密算法即对秘钥令牌参数进行解密的解密方法包括如下步骤:i

i1、将预置的动态参数字典作为初始化参数,并获得其所述有序参数字典;

i2、对所述有序参数字典进行字符串转换,得到参数字符串;

i3、对所述参数字符串进行非对称加密,获得参数密文;

i4、对所述参数密文进行字节数组转换,得到参数密文字节数组;

i5、对所述秘钥令牌参数进行解码,得到秘钥令牌字节数组;

i6、使用所述参数密文字节数组对所述秘钥令牌字节数组进行对称算法解密,得到服务编号字节数组;

i7、对服务编号字节数组进行字符串转换,得到服务编号;

所述非授信服务端令牌解密算法包括如下步骤:

ii01、调用所设定的第一参数模块获取接口请求动态参数以形成第一参数,调用所设定的第二参数模块获取用户权限凭证以形成第二参数,其中,所述接口请求动态参数由所述非授信客户端提供,所述用户权限凭证自所述用户权限信息中提取出;

ii02、对所述第一参数的属性顺序进行排序并进行字符串转化以得到参数字符串;

ii03、对所述参数字符串进行非对称加密并自所述参数字符串中截取一定长度的字符串作为秘钥参数,其字符串长度至少大于7;

ii04、获取秘钥插入位置以及秘钥长度,其中所述秘钥插入位置通过截取第四参数中1至2索引位字符并转换为整数数字获得,所述秘钥长度通过截取第四参数中4至5索引位字符并转换为整数数字获得;

ii05、获取新的秘钥参数即通过截取第二参数中索引位7至字符串最后一位的索引位字符;

ii06、截取ii05中的新的秘钥参数以获得认证秘钥,其对应的截取位置依据所述秘钥插入位置确定,截取长度为ii04中的秘钥长度;

ii07、获得认证参数密文,即自ii05的秘钥参数中删除包含所述认证秘钥所对应的参数;

ii08、对秘钥参数进行字节数组转换以获得认证密文字节数组,对应的转换方法采用字节编码utf-8;

ii09、对认证秘钥进行base64解码,获得参数密文字节数组;

ii10、对所述认证密文字节数组进行对称算法解密并使用所述参数密文字节数组作为参数盐以获得认证信息字节数组;

ii11、对所述认证信息字节数组进行字符串转换获得认证信息字符串并进行json对象实例转换进而获得认证信息,对应的转换方法采用字节编码utf-8;

ii12、自所述认证信息中获取用户权限凭证参数即用户动态凭证以及动态时间戳即根据系统当前时间生成的字符串;

ii13、合并所述用户动态凭证以及动态时间戳所对应的字符串,并进行非对称加密以获得加密字符串;

ii14、对所述加密字符串再次进行非对称加密并自第一位字符开始截取加密后的一定长度的字符串以获得随机秘钥;

ii15、比较随机秘钥以及认证秘钥是否相同,是则认证通过并删除在第二参数中时间戳并返回更改后的第二参数;否则返回空,表示认证解密失败。

与现有技术相比,本发明的有益效果:

本发明所对应的平台系统能够为跨平台应用提供安全认证的方式(包括对无状态会话与加密通讯的支持),其在认证模式根据场景被划分为两个,一个是平台系统内的授信服务认证,一个是跨平台系统间的非授信服务认证,实现了在简化认证算法流程,提高认证效率以及安全可靠性;且用户的认证信息采用角色权限的数据结构模式,具有通用性高,使用复杂度低,扩展性好,场景的支持度更广。综上,本发明有效的节省了物理服务器的内存资源,保证了请求的安全性,同时更加高效的处理请求认证。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图做以简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是本发明具体实施方式中方法对应的步骤流程图;

图2是本发明具体实施方式中方法对应的授信服务认证标签所对应的过滤认证算法步骤流程图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

鉴于现有平台系统均需要一个独立部署的认证服务端,且对于跨地域的分布式部署方案,认证服务端部署方式固定,网络约束性强,负载均衡或分布式方案复杂,而客户端需要结合权限控制框架,需要保存用户状态,缓存用户权限信息,不支持无状态会话且客户端接口之间通讯,没有对应的安全认证策略,只能将用户信息互相传递,采用用户认证的策略对应的诸多弊端。

本发明设计了一种基于跨平台加密算法与声明式过滤认证的平台认证方法以解决上述问题,下面以:本公司2017年度投产的《硬币调剂系统平台》为例,对基于跨平台加密算法与声明式过滤认证的跨平台认证方法进行具体说明:所述跨平台认证方法或者系统主要构建于互联网平台下,服务于银行等金融机构。所述平台系统的本质是一组功能服务系统的集合,其中包括多种客户端表现形式,诸如可包括:浏览器端调剂业务开放系统、浏览器端调剂管理系统、浏览器端硬件设备监控系统、浏览器端地图展示系统、微信端管理系统、微信端调剂业务开放系统、微信端地图展示系统等等;

基于上述要实现的功能,所述平台系统基本设计要求为:采用springcloud云平台技术实现,服务端通过服务注册组件实现上线注册,通过服务发现组件,为授信服务提供平台全量服务注册表本地缓存;由于系统客户端平台多样性的特点,使用声明式过滤认证作为请求的认证策略。如首先,调剂业务开放系统、调剂管理系统、硬件设备监控系统、微信端管理系统、微信端调剂业务开放系统的服务端构建于统一的云平台体系下,彼此之间通信使用授信服务策略;变现层浏览器端、手机端、地图端等独立部署在云平台之外,与平台上的其它服务通信使用非授信服务策略;其中,其表现层主要使用浏览器应用的形式展示,应用脚本语言均使用javascript规范语言;服务端包含有授信客户端令牌加密算法以及非授信客户端令牌加密算法,具体的构建框架构建一个脚本组件,组件内容包括,aes加密工具、sha1加密工具、md5加密工具、字符串转码工具、自定义混合加密工具;自定义加密工具,定义加密方法;使用第三方,脚本代码合并与混淆工具,将以上工具进行脚本合并,并进行代码混淆,用以达到不可读不可逆的效果,保证加密工具对使用者不透明的效果。在具体使用操作中,用户通过客户端变现层进行用户登录,登录成功后获取用户的认证权限信息,并进行客户端缓存;客户端使用框架提供的脚本工具组件,为用户的每个远程接口请求进行认证加密。接口请求加密流程为,整理接口请求参数字典;获取用户认证信息;使用加密脚本工具,如执行非授信客户端令牌加密算法,获取加密的秘钥令牌;请求参数字典追加秘钥令牌参数;执行远程接口调用,等待接口结果响应等等;相应的,服务端控制层开放通信接口,使用声明式过滤认证方法,做接口认证的描述与算法处理,以借由以上方式,使得开发者将安全认证与主体业务分离,由框架拦截机制统一进行安全验证,更透明,也更高效。另系统还可采用了加密认证算法,使得系统服务整体实现了无状态会话模式。所述无状态认证(会话)模式,允许将同一客户端的多次请求散列到不同的负载端,并且结果保持统一,可以更合理的分配系统资源,使得系统资源的利用更平均、更稳定。

基于上述设计方案,如图1,一种基于跨平台加密算法与声明式过滤认证的平台认证方法,s1、客户端构建与所述服务器客户端相匹配的用户状态数据结构并向服务客户端发送接口请求,所述用户状态数据结构用于预先为s3中过滤认证过程提供所需的用户状态信息,并与接口请求中的请求参数一起被整合成数据包向服务器客户端发送,所述请求参数被写入有供服务器客户端认证使用的认证秘钥以及服务秘钥;所述用户状态信息至少包括用户权限凭证、用户基本信息以及权限数据,所述用户权限凭证用于在无状态会话条件下获取用户登陆状态唯一标识即用户状态信息的关键词;所述权限数据包括角色编码数据与资源权限编码数据;s2、服务客户端收到来自客户端的接口请求;s3、根据所设定的认证注解声明,触发服务客户端内对应的前置过滤器对接口请求中的请求参数进行过滤认证并判断客户端是否为平台内所属的授信客户端,是则执行s4,否则执行s5;所述认证注解声明用于基于请求接口所对应的注解认证标签确认前置过滤器所需执行的过滤认证算法,所述注解认证标签具有多种标签属性,每一种标签属性对应一种被预置在前置过滤器中的过滤认证算法,且每一所述请求接口均各自对应某一属性的注解认证标签;所述注解认证标签依据接口认证需求被定义为下述几种属性:其包括但不限于授信服务认证标签、游客认证标签、已登入认证标签、角色认证标签以及权限认证标签;s4、若注解认证标签的标签属性属于授信服务认证标签,则确认为授信客户端并执行授信服务认证标签所对应的过滤认证过程,并在过滤认证成功后执行接口并返回结果;s5、若注解认证标签的标签属性属于非授信服务认证标签,则确认为非授信客户端并执行非授信服务认证标签所对应的过滤认证过程,并在过滤认证成功后执行接口并返回结果,所述非授信服务认证标签包括但不限于游客认证标签、已登入认证标签、角色认证标签以及权限认证标签。

在一种可选的实施方式中,在构建用户状态数据结构时,其可采用json(javascriptobjectnotation)js对象标记,其中,所述用户状态数据结构用于为s3中过滤认证过程提供所需的用户状态信息,并与接口请求中的请求参数一起被整合成数据包向服务器接受端发送,所述请求参数被写入有供服务端认证使用的认证秘钥以及服务秘钥,这是由于接口请求参数主要是提供给业务接口使用的,而秘钥参数即认证秘钥以及服务秘钥是不属于业务参数的一部分,而是由请求端后台写入,供服务端认证使用,其在使用完成后,从请求参数中删除,从而达到无感知自动化的效果;所述用户状态信息至少包括用户权限凭证、用户基本信息以及权限数据,所述用户权限凭证用于在无状态会话条件下获取用户登陆状态唯一标识即用户状态信息的关键词;所述权限数据包括角色编码数据与资源权限编码数据。具体的用户状态时用户登录后,系统缓存的用户基本信息,主要包括用户信息,角色权限信息等;权限凭证是用户登录时,随机生成的唯一索引,与用户等当前登录绑定(即与用户状态绑定)其登出或重新登入,上一次登入生成的唯一标识即作废;所述认证数据结构示例:{ticket:动态凭证,user:用户基本信息,roles:角色编码数组,permissions:资源权限编码数据}。其中,用户权限编码采用“资源:权限:属性”结构进行权限描述,编码以“:”分隔,每个节点都可以省略,省略节点或使用“*”值来表示节点可以是任意属性值。

在一种可选的实施方式中,如图2,授信服务认证标签所对应的过滤认证算法包括如下步骤:

(11)、获取请求参数中的认证秘钥并判断所述请求参数是否为空,是则抛出异常认证失败,否则进行下一步;

(12)、自所设定的接口参数字典中获取对应的服务编码并删除所述认证秘钥的属性信息;

(13)、基于授信服务端令牌解密算法,对所述认证秘钥进行解密以获得解密后的客户端的服务编码;

(14)、判断所述服务编码是否为空,是则抛出异常认证失败,否则进行下一步;

(15)、判断所述服务编码是否存在于所设定的本地授信服务注册表中,否则抛出异常认证失败;

(16)、确定请求接口所对应的注解认证标签的属性,即允许通过的服务编码数组;

(17)、若服务编码数组的数组长度为0,则确定为任何授信服务都可以认证通过;

(18)、循环步骤(16)中的服务编码数组,并判断是否存在与步骤(13)的客户端的服务编码相同的值,是则确认认证通过,否则抛出异常认证失败。

在一种可选的实施方式中,所述的非授信服务认证标签所对应的过滤认证过程包括:游客认证标签所对应的过滤认证算法、已登入认证标签所对应的过滤认证算法、角色认证标签所对应的过滤认证算法以及权限认证标签所对应的过滤认证算法;

其中,所述游客认证标签所对应的过滤认证算法包括如下步骤:

(21)、获取请求参数中的服务秘钥;

(22)、自所设定的接口参数字典中获取对应的实例并删除所述服务秘钥的属性信息;

(23)、判断所述服务秘钥是否为空,不空则执行授信服务端令牌解密算法,获得解密后的客户端的服务编码;

(24)、判断所述服务编码是否为空,不空则判断所述服务编码是否存在于所设定的本地授信服务注册表中,若存在,则认证通过并终止;

(25)、所述服务编码为空,则获取请求参数中的认证秘钥;

(26)、基于非授信服务端令牌解密算法,对所述认证秘钥进行解密以获得解密后的认证信息的json对象;

(27)、判断所述认证信息是否为空或不包含动态凭证属性,则通过认证并终止;否则,抛出异常认证失败。

所述已登入认证标签以供已登入账户会员通过认证,其所对应的过滤认证算法包括如下步骤:

(31)、获取请求参数中的服务秘钥;

(32)、自所设定的接口参数字典中获取对应的服务编码实例并删除所述认证秘钥的属性信息;

(33)、判断所述服务秘钥是否为空,不空则执行授信服务端令牌解密算法,获得解密后的客户端的服务编码;

(34)、判断所述服务编码是否为空,不空则判断所述服务编码是否存在于所设定的本地授信服务注册表中,若存在,则认证通过并终止;

(35)、所述服务编码为空,则获取请求参数中的认证秘钥;

(36)、基于非授信服务端令牌解密算法,对所述认证秘钥进行解密以获得解密后的认证信息json对象;

(37)、判断认证信息是否为空,不空且认证信息包含动态凭证属性,则通过认证并终止;否则,抛出异常认证失败。

所述角色认证标签仅拥有标签限定角色(即使用时声明的角色编码参数)的登入账户会通过认证,执行请求,其所对应的过滤认证算法包括如下步骤:

(401)、获取请求参数中的服务秘钥;

(402)、自所设定的接口参数字典中获取对应的服务编码实例并删除所述认证秘钥的属性信息;

(403)、判断所述服务秘钥是否为空,不空则执行授信服务端令牌解密算法,获得解密后的客户端的服务编码;

(404)、判断所述服务编码是否为空,不空则判断所述服务编码是否存在于所设定的本地授信服务注册表中,若存在,则认证通过并终止;

(405)、所述服务编码为空,则获取请求参数中的认证秘钥;

(406)、基于非授信服务端令牌解密算法,对所述认证秘钥进行解密以获得解密后的认证信息json对象;

(407)、判断认证信息是否为空,是则抛出异常认证失败;

(408)、获取认证信息所对应的对象的角色数组的属性;

(409)、确定请求接口所对应的注解认证标签的属性,即允许通过的角色编码数组;

(410)、获取请求接口所对应的注解认证标签的逻辑条件属性,

(411)、若所述逻辑条件属性值为“并且”,则循环步骤(408)的标签角色数组与步骤(409)的用户角色数组,同时若任意一个标签角色均不存在于用户角色数组中,则抛出异常认证失败;

(412)、若所述逻辑条件属性值为“或者”,则循环步骤(408)的标签角色数组与步骤(409)的用户角色数组,同时若没有一个标签角色与用户角色数组中的值一致,则抛出异常认证失败;否则,认证通过。

所述权限认证标签所对应的过滤认证算法包括如下步骤:

所述权限认证标签所对应的过滤认证算法包括如下步骤:

(501)、获取请求参数中的服务秘钥;

(502)、自所设定的接口参数字典中获取对应的服务编码实例并删除所述认证秘钥的属性信息;

(503)、判断所述服务秘钥是否为空,不空则执行授信服务端令牌解密算法,获得解密后的客户端的服务编码;

(504)、判断所述客户端服务编码是否为空,不空则判断所述服务编码是否存在于所设定的本地授信服务注册表中,若存在,则认证通过并终止;

(505)、所述服务编码为空,则获取请求参数中的认证秘钥;

(506)、基于非授信服务端令牌解密算法,对所述认证秘钥进行解密以获得解密后的认证信息json对象;

(507)、判断认证信息是否为空,是则抛出异常认证失败;

(508)、获取认证信息所对应的对象的权限数组属性;

(509)、确定请求接口所对应的注解认证标签的属性,即允许通过的权限编码数组;

(510)、获取请求接口所对应的注解认证标签的逻辑条件属性,

(511)、若所述逻辑条件属性值为“并且”,则循环步骤(508)的标签角色数组与步骤(509)的用户角色数组,同时若任意一个标签权限与用户权限匹配,则抛出异常认证失败;

(512)、若所述逻辑条件属性值为“或者”,则循环步骤(508)的标签角色数组与步骤(509)的用户角色数组,同时若没有一个标签权限与用户权限匹配,则抛出异常认证失败;否则,认证通过。

在一种可选的实施方式中,授信服务端令牌解密算法如下步骤:

将所述授信客户端预置的动态参数字典作为初始化参数,并获得其所述的有序参数字典;对所述有序参数字典进行字符串转换,得到参数字符串;对所述参数字符串进行非对称加密,获得参数密文;对所述参数密文进行字节数组转换,得到参数密文字节数组;对所述秘钥令牌参数进行解码,得到秘钥令牌字节数组;使用所述参数密文字节数组对所述秘钥令牌字节数组进行对称算法解密,得到服务编号字节数组;对服务编号字节数组进行字符串转换,得到服务编号。

在一种可选的实施方式中,所述非授信服务端令牌解密算法包括如下步骤:

调用所设定的第一参数模块获取接口请求动态参数以形成第一参数,调用所设定的第二参数模块获取用户权限凭证以形成第二参数,其中,所述接口请求动态参数由所述非授信客户端提供,所述用户权限凭证自所述用户权限信息中提取出,第二参数即客户端请求参数中的秘钥令牌参数-“加密的”用户权限凭证;所述第一参数的属性顺序进行排序并进行字符串转化以得到参数字符串;对所述参数字符串进行非对称加密并自所述参数字符串中截取一定长度的字符串作为秘钥参数,其字符串长度至少大于7;获取秘钥插入位置以及秘钥长度,其中所述秘钥插入位置通过截取第二参数中1至2索引位字符并转换为整数数字获得,所述秘钥长度通过截取第二参数中4至5索引位字符并转换为整数数字获得;获取新的秘钥参数即通过截取第二参数中索引位7至字符串最后一位的索引位字符;截取ii06中的新的秘钥参数以获得认证秘钥,其对应的截取位置依据所述秘钥插入位置确定,截取长度为ii05中的秘钥长度;获得认证参数密文,即自ii06的秘钥参数中删除包含所述认证秘钥所对应的参数;对秘钥参数进行字节数组转换以获得认证密文字节数组,对应的转换方法采用字节编码utf-8;对认证秘钥进行base64解码,获得参数密文字节数组;对所述认证密文字节数组进行对称算法解密并使用所述参数密文字节数组作为参数盐以获得认证信息字节数组;对所述认证信息字节数组进行字符串转换获得认证信息字符串并进行json对象实例转换进而获得认证信息,对应的转换方法采用字节编码utf-8;自所述认证信息中获取用户权限凭证参数即用户动态凭证以及动态时间戳即根据系统当前时间生成的字符串;合并所述用户动态凭证以及动态时间戳所对应的字符串,并进行非对称加密以获得加密字符串;对所述加密字符串再次进行非对称加密并自第一位字符开始截取加密后的一定长度的字符串以获得随机秘钥;比较随机秘钥以及认证秘钥是否相同,是则认证通过并删除在第二参数中时间戳并返回更改后的第二参数;否则返回空,表示认证解密失败。

在一种可选的实施方式中,权限匹配的算法包括如下步骤:

s1、创建第一参数用以获取用户权限编码数组,建第二参数用以获取匹配权限编码;s2、获取权限节点属性数组;s3、循环第一参数并分割所述第一参数中的每个对象以获得用户权限属性数组;s4、对所涉及的临时变量进行初始化;s5、循环s2中的权限节点属性数组;s6、若s5中的用户权限属性数组长度小于等于当前循环的索引,或s3的用户权限属性数组中当前循环索引的属性等于“*”时,终止循环s5;s7、取s5中循环所对应的索引值,比较用户权限属性与当前节点属性,若相等,则继续循环s5;s8否则,设定s4中的临时变量为否;s9、终止循环s5;s10、若临时变量为是,结束匹配算法并返回结果是;s11、终止循环s3;s12、结束匹配算法并返回结果否。在一种可选的实施方式中,s4中对所涉及的临时变量进行初始化即验证需要循环校验上述的数组,以使得每一项权限属性时候校验通过,结果记录在临时变量中;这里“结果为是”的意思是“设定变量初始值为true”。

由于一种基于跨平台加密算法与声明式过滤认证的平台认证系统,其核心与上述基于跨平台加密算法与声明式过滤认证的平台认证方法的核心内容基本一致,因此不再赘述,另系统的架构可采用负载均衡服务设备,对服务集群进行负载均衡策略,按后端服务器的响应时间来分配请求,响应时间短的优先分配。

综上所述,本发明所述方法或者系统区别于常规系统主要包括下述:

首先,其认证模式根据场景被划分为两个,一个是平台系统内的授信服务认证,一个是跨平台系统间的非授信服务认证;之所以对场景划分是因为在平台系统内,授信服务本身就是已经通过了安全认证的服务,因此,两个授信服务间彼此通信,只需要确认请求来源是否可靠,并验证请求来源是否在允许的服务列表中;而对于跨平台通信来说,需要验证用户的角色权限等认证信息,算法复杂度高,认证模式被划分为两个就可以有效的区分请求来源,并简化认证算法流程,提高认证效率;

其次,所涉及的用户的认证信息,采用角色权限的数据结构模式,使其具有通用性高,使用复杂度更低,扩展性好,场景的支持度更广等优点;

再次,使用了对称与非对称加密算法混合加密与密文混淆等方式;同时将请求参数与随机时间戳作为必须的加密参数,因此密文拥有动态随机的特性,密文不可读,不完全可逆,且不可复制,安全性更高。因此,想要通过截取有效请求的密文,修改请求参数的方式,发起恶意的非法请求,是无法通过安全认证的机制的;同时对于非授信加密算法,采用基于主流的加密算法,跨平台支持度高,可用性强能,可以提前对加密算法进行不可逆混淆与打包,快速接入到各个开发平台中,本文以javascript脚本平台为例。

最后,使用注解式的声明过滤认证方案,对于服务端接口开发,认证参数的描述更清晰更简洁,并且与主要业务分离,代码的清晰度更好再配合接口拦截技术,认证过程对于开发者更透明,简化了开发流程,提高开发效率。且通过认证加密传递的方式,对无状态会话的支持度更高,对于负载均衡的可靠性也更高。同一时刻的相同请求,可以保证对于任何一个负载端,认证的结果都保持一致,因此负载均衡设备可以更加灵活的分配请求资源,没有过多的限制。具体的,如对于无状态会话策略的支持,使得用户的认证信息,脱离了服务端缓存,而更多的交由客户端处理。以浏览器客户端为例,通过将认证信息缓存到每个客户机,有效的降低了服务端的内存使用率,节省系统资源。

综上,采用本发明可有效的节省了物理服务器的内存资源,保证了请求的安全性,同时更加高效的处理请求认证。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

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