鉴权方法及装置、鉴权码生成方法及装置、鉴权系统
技术领域
本申请涉及计算机技术领域,尤其涉及一种鉴权方法及装置、一种鉴权码的生成方法及装置以及一种鉴权系统。
背景技术
随着互联网、计算机和应用程序的发展,出现了各种互联网业务(简称业务),用户可以通过计算机中的应用程序在互联网中请求并完成业务。但是并非只要接入到互联网中的计算机就可以随意完成各种业务,换句话说,对于某个业务而言,并非只要接入到互联网中就有权请求、完成,这就出现了鉴权机制,鉴权是指验证(鉴别)用户是否拥有请求完成业务的权限。比如,业务通过用户在应用程序中输入的密码进行鉴权;通过用户的地理位置进行鉴权等。
现有技术如图1所示,仅能针对一个鉴权属性进行鉴权,比如,仅针对密码这一鉴权属性进行鉴权,仅针对地理位置这一鉴权属性进行鉴权,也就是在用户请求互联网业务时,只要输入的密码可以通过鉴权,就可以请求该业务;或者只要用户所处的地理位置满足鉴权要求,该用户就可以请求该业务。但是随着互联网的发展,通过单一鉴权属性进行粗粒度的权限控制已经无法满足鉴权需求,更多的是需要通过多个鉴权属性进行细粒度的权限控制,所以现有技术中无法进行细粒度的鉴权成为亟待解决的问题。
发明内容
本申请实施例提供一种鉴权方法,用于在互联网业务中进行细粒度地控制权限。
本申请实施例提供一种鉴权装置,用于在互联网业务中进行细粒度地控制权限。
本申请实施例提供一种鉴权码的生成方法,用于提高鉴权过程的安全性。
本申请实施例提供一种鉴权码的生成装置,用于提高鉴权过程的安全性。
本申请实施例提供一种鉴权系统,用于在互联网业务中进行细粒度地控制权限,并且提高鉴权过程的安全性。
本申请实施例采用下述技术方案:
一种鉴权方法,包括:
获取第一鉴权属性值集合以及对应的鉴权属性集合,所述鉴权属性集合中包含至少两个鉴权属性;
根据所述鉴权属性集合,获取第二鉴权属性值集合;
根据所述第一鉴权属性值集合与所述第二鉴权属性值集合的匹配结果,进行鉴权。
优选地,获取第一鉴权属性值集合以及对应的鉴权属性集合,包括:
获取第一鉴权码、鉴权码生成规则以及对应的鉴权属性集合,所述第一鉴权码根据所述第一鉴权属性值集合以及所述鉴权码生成规则生成;则
所述方法具体包括:
根据所述鉴权属性集合,从第二终端中获取第二鉴权属性值集合;
根据所述第二鉴权属性值集合以及所述鉴权码生成规则生成第二鉴权码;
根据所述第一鉴权码与所述第二鉴权码的匹配结果,进行鉴权。
优选地,获取第一鉴权码、鉴权码生成方法以及对应的鉴权属性集合,包括:
获取鉴权信息;
对所述鉴权信息进行解析,确定第一鉴权码以及业务标识;
根据所述业务标识,获取鉴权码生成方法以及对应的鉴权属性集合。
优选地,获取第一鉴权码、鉴权码生成方法以及对应的鉴权属性集合,包括:
获取第一鉴权码、鉴权码生成方法、排序信息以及对应的鉴权属性集合,所述第一鉴权码根据所述第一鉴权属性值集合、所述排序信息以及所述鉴权码生成方法生成;则
所述方法具体包括:
根据所述鉴权属性集合,获取终端中的第二鉴权属性值集合;
根据所述第二鉴权属性值集合、所述排序信息以及所述鉴权码生成规则生成第二鉴权码;
根据所述第一鉴权码与所述第二鉴权码的匹配结果,进行鉴权。
优选地,所述鉴权信息为令牌token。
优选地,所述鉴权码生成规则为摘要算法。
一种鉴权装置,包括:第一获取单元、第二获取单元以及鉴权单元,其中,
所述第一获取单元,获取第一鉴权属性值集合以及对应的鉴权属性集合,所述鉴权属性集合中包含至少两个鉴权属性;
所述第二获取单元,根据所述鉴权属性集合,获取第二鉴权属性值集合;
所述鉴权单元,根据所述第一鉴权属性值集合与所述第二鉴权属性值集合的匹配结果,进行鉴权。
优选地,所述第一获取单元,获取第一鉴权码、鉴权码生成规则以及对应的鉴权属性集合,所述第一鉴权码根据所述第一鉴权属性值集合以及所述鉴权码生成规则生成;
则所述第二获取单元,
根据所述鉴权属性集合,从第二终端中获取第二鉴权属性值集合;
根据所述第二鉴权属性值集合以及所述鉴权码生成规则生成第二鉴权码;
所述鉴权单元,根据所述第一鉴权码与所述第二鉴权码的匹配结果,进行鉴权。
优选地,所述第一获取单元,
获取鉴权信息;
对所述鉴权信息进行解析,确定第一鉴权码以及业务标识;
根据所述业务标识,获取鉴权码生成方法以及对应的鉴权属性集合。
优选地,所述第一获取单元,获取第一鉴权码、鉴权码生成方法、排序信息以及对应的鉴权属性集合,所述第一鉴权码根据所述第一鉴权属性值集合、所述排序信息以及所述鉴权码生成方法生成;
则所述第二获取单元,
根据所述鉴权属性集合,获取终端中的第二鉴权属性值集合;
根据所述第二鉴权属性值集合、所述排序信息以及所述鉴权码生成规则生成第二鉴权码;
所述鉴权单元,根据所述第一鉴权码与所述第二鉴权码的匹配结果,进行鉴权。
一种鉴权码的生成方法,包括:
获取鉴权属性值集合、以及鉴权码生成规则;
根据所述鉴权属性值集合,通过所述鉴权码生成规则,生成鉴权码。
优选地,所述方法还包括:
获取所述鉴权属性值集合对应的业务标识;
根据所述业务标识以及所述鉴权码,生成鉴权信息。
优选地,获取鉴权属性值集合、以及鉴权码生成规则,包括:
获取鉴权属性值集合、排序信息以及鉴权码生成规则;则
根据所述鉴权属性值集合,通过所述鉴权码生成规则,生成鉴权码,包括:
根据所述排序信息,将所述鉴权属性值集合中的各鉴权属性值进行排序;
将排序后的鉴权属性值集合,通过所述鉴权码生成规则,生成鉴权码。
一种鉴权码的生成装置,包括:获取单元以及生成单元,其中,
所述获取单元,获取鉴权属性值集合、以及鉴权码生成规则;
所述生成单元,根据所述鉴权属性值集合,通过所述鉴权码生成规则,生成鉴权码。
优选地,所述生成单元,
获取所述鉴权属性值集合对应的业务标识;
根据所述业务标识以及所述鉴权码生成规则,生成鉴权信息。
优选地,所述获取单元,
获取鉴权属性值集合、排序信息以及鉴权码生成规则;
则所述生成单元,
根据所述排序信息,将所述鉴权属性值集合中的各鉴权属性值进行排序;
将排序后的鉴权属性值集合,通过所述鉴权码生成规则,生成鉴权码。
一种鉴权系统,包括:
所述第一终端,
获取第一鉴权属性值集合、以及鉴权码生成规则;
根据所述鉴权属性值集合,通过所述鉴权码生成规则,生成第一鉴权码;
所述第二终端,
获取所述第一鉴权码、所述鉴权码生成规则以及对应的鉴权属性集合;
根据所述鉴权属性集合,从所述第二终端中获取第二鉴权属性值集合;
根据所述第二鉴权属性值集合以及所述鉴权码生成规则生成第二鉴权码;
根据所述第一鉴权码与所述第二鉴权码的匹配结果,进行鉴权。
优选地,所述第一终端,
获取第一鉴权属性值集合、排序信息以及鉴权码生成规则;
根据所述排序信息,将所述第一鉴权属性值集合中的各鉴权属性值进行排序;
将排序后的第一鉴权属性值集合,通过所述鉴权码生成规则,生成第一鉴权码;
所述第二终端,
获取所述第一鉴权码、所述鉴权码生成规则、所述排序信息以及对应的鉴权属性集合;
根据所述鉴权属性集合,从所述第二终端中获取第二鉴权属性值集合;
根据所述第二鉴权属性值集合、所述排序信息以及所述鉴权码生成规则生成第二鉴权码。
优选地,所述第一终端,
获取所述鉴权属性值集合对应的业务标识;
根据所述业务标识以及所述第一鉴权码,生成鉴权信息;
所述第二终端,
获取鉴权信息;
对所述鉴权信息进行解析,确定第一鉴权码以及业务标识;
根据所述业务标识,获取鉴权码生成规则以及对应的鉴权属性集合。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:在进行鉴权时,先获取包含至少两个鉴权属性值的第一鉴权属性值集合以及对应的鉴权属性集合,再根据鉴权属性获取第二鉴权属性值集合,最终根据两种鉴权属性值集合的匹配结果进行鉴权,通过至少两个鉴权属性值,实现细粒度的权限控制,解决了现有技术仅针对一个鉴权属性进行鉴权导致的鉴权控制粒度较粗的问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本现有技术的鉴权方法的示意图;
图2为本申请实施例1提供的鉴权方法的流程示意图;
图3为本申请实施例3提供的鉴权方法的示意图;
图4为本申请实施例2提供的鉴权方法的流程示意图;
图5为本申请实施例2提供的鉴权方法的示意图;
图6为本申请实施例2提供的token的示意图;
图7为本申请实施例2提供的生成token的示意图;
图8为本申请实施例3提供的鉴权码生成方法的流程示意图;
图9为本申请实施例3提供的鉴权方法的流程示意图;
图10为本申请实施例3提供的根据业务标识,获取鉴权码生成规则、排序信息以及对应的鉴权属性集合的示意图;
图11为本申请实施例3提供的鉴权方法的示意图;
图12为本申请实施例4提供的鉴权装置的结构框图;
图13为本申请实施例5提供的鉴权码的生成装置的结构框图;
图14为本申请实施例6提供的鉴权系统的示意图;
图15为本申请实施例6提供的鉴权系统中服务器的示意图;
图16为本申请实施例6提供的鉴权系统中客户端的示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
以下结合附图,详细说明本申请各实施例提供的技术方案。
实施例1
如前所述,现有技术仅能通过单一鉴权属性进行比较粗粒度的鉴权,比如,只能通过用户名和密码是否匹配进行鉴权,此时只要用户根据用户名输入的密码与用户名匹配就可以通过鉴权;又如,只能通过用户终端所处地理位置与预设地理位置是否匹配进行鉴权,此时只要用户终端处于预设地理位置就可以通过鉴权,但是这种“粗犷”的鉴权方法已经无法满足目前的鉴权需求,业务方既希望通过地理位置进行鉴权又希望通过时间鉴权,比如,要求终端所处地理位置与预设地理位置匹配,还希望所处时间与预设时间段匹配,又如,再次基础上,还希望通过用户终端中操作系统版本进行鉴权。所以基于此缺陷,本申请提供了一种鉴权方法,用于在互联网业务中进行细粒度地控制权限。该方法的流程示意图如图2所示,包括下述步骤:
步骤11:获取第一鉴权属性值集合以及对应的鉴权属性集合。
在互联网业务需要进行鉴权时要有一个“标准”,这个“标准”就可以是第一鉴权属性值集合,比如对于某个业务而言,需要地理位置和时间均满足鉴权的要求才能够完成,其中鉴权要求为地理位置是北京、时间是上午,那么“beijing”、“AM”就可以是第一鉴权属性值,由于现有技术中只能够通过单一鉴权属性进行比较粗粒度的权限控制,所以本步骤可以预先设定至少两个第一鉴权属性值,组成第一鉴权属性值集合,在预设鉴权属性值时,可以根据具体的鉴权要求增多或减少鉴权属性值。预先设定了鉴权属性值,那么在进行鉴权时就需要根据获取对应的属性值,与预先设定的“标准”进行匹配,所以还可以获取与第一鉴权属性值集合对应的鉴权属性集合,比如,“地理位置”、“时间段”就可以是鉴权属性集合,这里,第一鉴权属性值集合以及对应的鉴权属性集合可以称为鉴权规则。具体的获取方式,可以是从业务内部获取,比如,业务人员将包含第一鉴权属性值集合以及对应的鉴权属性集合的鉴权规则以配置文件的方式写入到业务中,或以代码的形式写入到业务内部,当需要进行鉴权时,可以从业务内部获取。
步骤12:根据鉴权属性集合,获取第二鉴权属性值集合。
在设定鉴权规则时,已经预先设定了鉴权属性值,在步骤11中也已经获取到了鉴权属性集合,所以在本步骤中,就可以根据鉴权属性集合,去获取第二鉴权属性值集合。比如,鉴权属性集合为“地理位置”和“时间段”,那么就可以获取请求业务的终端的地理位置,以及鉴权时的时间,将获取到的各鉴权属性值作为第二鉴权属性值集合。
需要说明的是,一些属性值可能存在很强的特殊性,比如,时间、数额等,所以可以通过设定区间值使属性值普遍化。比如可以将时间段划分为“AM”和“PM”,当获取到的时间为“0:21”时,就可以确定鉴权属性值为“AM”;又如,将时间段划分为“time1”(0:00-3:00)、“time2”(3:00:01-6:00)……“timeN”等,当获取到的时间为“0:21”时,就可以确定鉴权属性值为“time1”。在数额这个鉴权属性上也存在类似问题,可以将数额划分为“[0,3000]”、“(3000,6000]”、“(6000,9000]”等区间,等获取到的数额为“2000”时,可以确定鉴权属性值为“3000”。
具体的获取方式,可以是获取用户输入的,也可以是从请求业务的应用程序、或终端中获取。比如,鉴权属性为年龄,就可以获取用户输入的年龄,也可以获取用户预先保存在应用程序中的年龄;又如,鉴权属性为地理位置和时间,那么就可以通过GPS(GlobalPositioning System,全球定位系统)定位,基站定位,IP(Internet Protocol,网络之间互连的协议)地址定位等方式获取终端的地理位置,以及通过定位和互联网,获取终端所处时区的时间。
步骤13:根据第一鉴权属性值集合与第二鉴权属性值集合的匹配结果,进行鉴权。
在步骤11中获取了第一鉴权属性值集合,并且在步骤12中获取到了第二鉴权属性值集合,第一鉴权属性值集合是预先设定的“标准”,所以就可以将第二鉴权属性值集合与第一鉴权属性值集合进行对比,得到匹配结果,具体地,可以为鉴权设置不同的逻辑,类似于黑名单或白名单,当匹配成功时,鉴权通过(或失败);当匹配不成功时,鉴权通过(或失败),等。
比如,预先设定的第一鉴权属性值集合为“beijing”和“AM”,鉴权属性集合为“地理位置”和“时间”,根据该鉴权属性集合,通过基站定位方式获取到了终端所处位置为“beijing”,通过互联网查询到当前时间为“16:00”,并确定为“PM”,所以第二鉴权属性值集合即为“beijing”和“PM”,由于两个鉴权属性值集合不匹配,所以鉴权失败。
采用实施例1提供的方法,在进行鉴权时,先获取包含至少两个鉴权属性值的第一鉴权属性值集合以及对应的鉴权属性集合,再根据鉴权属性获取第二鉴权属性值集合,最终根据两种鉴权属性值集合的匹配结果进行鉴权,通过至少两个鉴权属性值,实现细粒度的权限控制,解决了现有技术仅针对一个鉴权属性进行鉴权导致的鉴权控制粒度较粗的问题。
实施例2
在实施例1中已经介绍,当需要进行鉴权时,可以从业务内部获取包含第一鉴权属性值集合以及对应的鉴权属性集合的鉴权规则,也就是,会将鉴权规则以代码的形式添加(“植入”)到需要进行鉴权的业务中,比如,如图3所示,在业务中将预设鉴权规则通过代码的形式进行编写,当用户请求该业务时,业务会根据代码编写的鉴权规则中需要鉴权的鉴权属性集合,去从终端中获取第二鉴权属性值集合,通过与鉴权规则中的第一鉴权属性值集合进行对比以便完成鉴权。但是,如果鉴权规则发生变化(属性和/或属性值变化),就需要重新在业务中改写代码,甚至更新应用程序的版本,或者更新业务对应的功能单元的版本,这对于业务中的鉴权规则来说扩展性较差,如果鉴权规则发生变化,实现修改鉴权规则的过程比较繁琐。又如图3所示,仅介绍了一个业务的鉴权过程,如果有多个业务都需要鉴权,就需要为每个业务编写代码,即使相同应用程序中的不同业务,都可能存在底层代码类型不同(不同语言编写),在为每个业务添加鉴权规则时,需要去适应每个业务,特殊性很强,普遍性就很弱,如果总是在适应每个业务上浪费时间,显然不值得。所以,在实施例1的基础上,作为优选方案,本申请又提供一鉴权方法,用于在鉴权过程中提高鉴权规则的扩展性和普遍性。该方法的示意图如图4和图5所示,包括下述步骤:
步骤21:从业务外部获取第一鉴权属性值集合以及对应的鉴权属性集合。
前文已经分析,将第一鉴权属性值集合以及对应的鉴权属性集合“植入”到业务内部的问题,所以可以将第一鉴权属性值集合以及对应的鉴权属性集合保存在业务外部,比如应用程序中专门用于管理鉴权规则的功能模块,或者除进行鉴权的终端以外的其他终端上,又或服务器等,总之将第一鉴权属性值集合以及对应的鉴权属性集合放在业务外部的作用就是,将其与业务隔离。与步骤11相同,鉴权属性集合中包含至少两个鉴权属性,也就是第一鉴权属性值集合种也包含至少两个鉴权属性值。
步骤22:根据鉴权属性集合,获取第二鉴权属性值集合。
步骤23:根据第一鉴权属性值集合与第二鉴权属性值集合的匹配结果,进行鉴权
与步骤12和步骤13类似,本步骤就可以从进行鉴权的终端中,获取第二鉴权属性值集合,并且根据两鉴权属性值集合进行鉴权。
采用实施例2提供的方法,将包含第一鉴权属性值集合以及对应的鉴权属性集合的鉴权规则与业务进行隔离,在进行添加、删除、修改鉴权规则后,无需修改业务内部,所以实现细粒度的权限控制,解决了现有技术仅针对一个鉴权属性进行鉴权导致的鉴权控制粒度粗的问题的同时,增强了鉴权行为的扩展性,并且在对每个业务进行鉴权时,也无需去适应每个业务,而是依据从第二终端获取到的鉴权属性值集合去鉴权,提高了鉴权规则的普遍性。
实施例3
在前两个实施例中,分别介绍了如何细粒度进行权限控制,以及如何提高扩展性和普遍性,但是考虑到在获取鉴权规则,尤其是实施例2中,从业务外部获取时,会有安全性的问题,比如在网络传输过程中被拦截篡改等,所以本申请提供了一种鉴权方法以及一种鉴权码的生成方法,用于提高鉴权过程的安全性。假设鉴权码生成方法的执行主体为第一终端,鉴权方法的执行主体为第二终端。先介绍鉴权码生成的方法,该方法的流程示意图如图6所示,包括下述步骤:
步骤31:获取鉴权属性值集合、以及鉴权码生成规则。
在实施例1的步骤11中已经介绍,在互联网业务需要进行鉴权时,要有一个“标准”,并且第一鉴权属性值集合就可以是“标准”,在实施例1中介绍由于需要进行匹配,所以将预设的“标准”称为第一鉴权属性值集合,而将获取到的鉴权属性值集合称为第二鉴权属性值集合,在生成鉴权码的过程中,并不涉及第一鉴权属性值集合以外的,所以就可以称为鉴权属性值集合,这里的鉴权属性值集合的作用是与第一鉴权属性值集合相同的,比如,“beijing”、“AM”。在获取了鉴权属性值集合后,还需要获取鉴权码的生成规则,该生成规则可以是简单的组合,比如,将鉴权属性值集合按照预设的顺序进行组合,但是简单的组合规则可能会存在安全性问题,所以,在实际应用中,为了达到提高安全性的目的,鉴权码生成规则可以是指具体的算法,比如,可以是摘要算法中的CRC(Cyclic Redundancy Check,循环冗余校验)算法;MD5(Message-Digest Algorithm 5,消息摘要算法版本5)算法;SHA(Secure Hash Algorithm)系列算法,包括SHA为20字节(160位)、SHA256为32字节(256位)、SHA384为48字节(384位)、SHA512为64字节(512位);RIPEMD(Race Integrity PrimitivesEvaluation Message Digest,Race原始完整性校验消息摘要)算法等。
在前文已经介绍,生成规则可以是简单的组合规则,所以,为了进一步提高安全性,本步骤可以包括:获取鉴权属性值集合、排序信息以及鉴权码生成规则。具体地,排序信息可以是对鉴权属性值集合中各鉴权属性值的排序信息。
步骤32:根据鉴权属性值集合,通过鉴权码生成规则,生成鉴权码。
在上一步骤中,已经介绍生成规则可以是简单的组合,比如鉴权属性值集合是“beijing”、“AM”,根据简单组合生成的鉴权码就可以是“beijingAM”。前文已经介绍,为了提高安全性,鉴权码生成规则可以是摘要算法,具体可以是MD5算法,所以可以将“beijingAM”,通过MD5算法生成一个32位的字符串作为鉴权码,得到“646b152e3aae9cf37cc34028f75638d8”,或16位的字符串作为鉴权码“3aae9cf37cc34028”。为了进一步提高安全性,上一步骤还可以获取到排序信息,所以本步骤就可以根据排序信息,将鉴权属性值集合中的各鉴权属性值进行排序;将排序后的鉴权属性值集合,通过鉴权码生成规则,生成鉴权码。比如,鉴权属性值集合中有三种鉴权属性值,分别是鉴权属性值A、鉴权属性值B、鉴权属性值C,排序信息为“B、A、C”,那么在对鉴权属性值集合中的鉴权属性值进行排序后的结果就是:“鉴权属性值B”、“鉴权属性值A”、“鉴权属性值C”。完成排序后,就得到了排序后的鉴权属性值集合,此时就可以通过MD5算法,生成鉴权码。鉴权码虽然可以作为一个鉴权信息进行鉴权,但是鉴权属性值集合是为了在业务中鉴权的,鉴权属性值集合必定对应一个业务,所以可以将鉴权码以及对应的业务标识进行关联,生成一个完整的鉴权信息。在一种实施方式中,为了得到一个完整的鉴权信息,还可以包括
步骤33:获取鉴权属性值集合对应的业务标识;根据业务标识以及鉴权码,生成鉴权信息。
互联网业务繁多,为了便于识别业务,可以将业务进行标识,比如可以通过1、2、3等业务标识分别代表查询业务、登录业务、支付业务等。鉴权码可以是32位字符串,业务标识可以是1、2、3等字符,所以如果业务标识是1位字符,那么就可以生成一个33位的鉴权信息,在实际应用中业务标识和鉴权码的顺序也是可以预先设定的,比如业务标识在前鉴权码在后,或业务标识在后鉴权码在前。在实际应用中,可以将鉴权信息定义为令牌token,token的结构如图7所示,生成token的示意图如图8所示。
介绍完鉴权码的生成方法,下面介绍鉴权方法,该方法的流程示意图如图9所示,包括下述步骤:
步骤41:从第一终端中获取第一鉴权码、鉴权码生成规则以及对应的鉴权属性集合。
前文已经介绍,为了提高安全性,可以将鉴权属性值集合通过鉴权码生成规则(如摘要算法)生成鉴权码,所以在本步骤中,也可以去获取鉴权码,其中,第一鉴权码就是步骤32中生成的鉴权码,该第一鉴权码是根据第一鉴权属性值集合以及鉴权码生成规则生成的。第一鉴权属性值集合可以是第一终端预先设定的,并且对应设定了鉴权属性集合,本步骤在鉴权时,可以向第一终端发送请求,以便获取。
前文已经介绍,为了进一步提高安全性,还可以在生成鉴权码时加入排序信息,所以本步骤还可以包括:获取第一鉴权码、鉴权码生成方法、排序信息以及对应的鉴权属性集合。其中,该第一鉴权码在步骤32中也已经介绍,是根据第一鉴权属性值集合、排序信息以及鉴权码生成方法生成。
在实际应用中,鉴权的步骤有可能不是由业务本身执行,可以是其它功能模块来执行,所以,在一种实施方式中,本步骤可以包括:获取鉴权信息;对鉴权信息进行解析,确定第一鉴权码以及业务标识;根据业务标识,获取鉴权码生成方法以及对应的鉴权属性集合。比如,在步骤33中已经介绍,鉴权信息可以是根据业务标识的字符和鉴权码生成的令牌token,也业务标识为1位字符、鉴权码是根据鉴权属性值集合和MD5算法生成的32位鉴权码为例。本步骤中,在获取到token后,可以根据预先设定的业务标识和鉴权码的前后顺序,确定出第一鉴权码以及业务标识,比如,预先设定业务标识为1位,在前,鉴权码为32为在后,那么就可以直接截取后32位,作为第一鉴权码,将剩余的字符作为业务标识。如果在生成鉴权码时加入排序信息,那么还可以如图10所示,根据业务标识,获取鉴权码生成规则、排序信息以及对应的鉴权属性集合。
步骤42:根据鉴权属性集合,从第二终端中获取第二鉴权属性值集合;根据第二鉴权属性值集合以及鉴权码生成规则生成第二鉴权码。
与步骤12类似,在获取到鉴权属性集合后,可以从需要鉴权的第二终端中获取第二鉴权属性值集合,并且根据步骤41中获取的鉴权码生成规则生成第二鉴权码。具体生成方法,与步骤32介绍的生成鉴权码的方法相同。在步骤41中介绍可以是获取第一鉴权码、鉴权码生成方法、排序信息以及对应的鉴权属性集合,所以在本步骤中,也可以包括:根据鉴权属性集合,获取终端中的第二鉴权属性值集合;根据第二鉴权属性值集合、排序信息以及鉴权码生成规则生成第二鉴权码。具体地,与步骤32介绍的生成鉴权码的方法相同。
步骤43:根据第一鉴权码与第二鉴权码的匹配结果,进行鉴权。
本步骤与步骤13类似,区别在于是根据第一鉴权码与第二鉴权码进行鉴权。
在本申请实施例中,第一终端和第二终端可以但不限于分别代表服务器和客户端,也就是服务器用于指定鉴权规则,并且生成第一鉴权码(或令牌token这种鉴权信息),并下发给客户端,客户端获取第一鉴权码对应的鉴权属性集合,或者由客户端中单独的功能模块获取token,解析出业务标识和第一鉴权码,并根据业务标识获取鉴权属性集合以及鉴权码生成规则(算法)(还可以有排序信息),从客户端中获取第二鉴权属性值集合,并按照鉴权码生成规则(还可以有排序信息)生成第二鉴权码,利用两鉴权码进行匹配鉴权。该鉴权方法和鉴权码生成方法的示意图可以参照图11所示。
采用实施例3提供的方法,通过将第一鉴权属性值集合“隐藏”在鉴权码中,提高了鉴权过程中的安全性;通过为鉴权属性值集合设定排序信息,进一步提高鉴权过程了安全性。
实施例4
基于相同的发明构思,实施例4提供了一种鉴权装置。图12为该装置的结构图,该装置包括:第一获取单元41、第二获取单元42以及鉴权单元43,其中,
所述第一获取单元41,可以获取第一鉴权属性值集合以及对应的鉴权属性集合,所述鉴权属性集合中包含至少两个鉴权属性;
所述第二获取单元42,可以根据所述鉴权属性集合,获取第二鉴权属性值集合;
所述鉴权单元43,可以根据所述第一鉴权属性值集合与所述第二鉴权属性值集合的匹配结果,进行鉴权。
在一种实施方式中,所述第一获取单元41,可以获取第一鉴权码、鉴权码生成规则以及对应的鉴权属性集合,所述第一鉴权码根据所述第一鉴权属性值集合以及所述鉴权码生成规则生成;
则所述第二获取单元42,可以
根据所述鉴权属性集合,从第二终端中获取第二鉴权属性值集合;
根据所述第二鉴权属性值集合以及所述鉴权码生成规则生成第二鉴权码;
所述鉴权单元,根据所述第一鉴权码与所述第二鉴权码的匹配结果,进行鉴权。
在一种实施方式中,所述第一获取单元42,可以
获取鉴权信息;
对所述鉴权信息进行解析,确定第一鉴权码以及业务标识;
根据所述业务标识,获取鉴权码生成方法以及对应的鉴权属性集合。
在一种实施方式中,所述第一获取单元41,可以获取第一鉴权码、鉴权码生成方法、排序信息以及对应的鉴权属性集合,所述第一鉴权码根据所述第一鉴权属性值集合、所述排序信息以及所述鉴权码生成方法生成;
则所述第二获取单元42,可以
根据所述鉴权属性集合,获取终端中的第二鉴权属性值集合;
根据所述第二鉴权属性值集合、所述排序信息以及所述鉴权码生成规则生成第二鉴权码;
所述鉴权单元43,可以根据所述第一鉴权码与所述第二鉴权码的匹配结果,进行鉴权。
实施例5
基于相同的发明构思,实施例5提供了一种鉴权码的生成装置。图13为该装置的结构图,该装置包括:获取单元51以及生成单元52,其中,
所述获取单元51,可以获取鉴权属性值集合、以及鉴权码生成规则;
所述生成单元52,可以根据所述鉴权属性值集合,通过所述鉴权码生成规则,生成鉴权码。
在一种实施方式中,所述生成单元52,可以
获取所述鉴权属性值集合对应的业务标识;
根据所述业务标识以及所述鉴权码生成规则,生成鉴权信息。
在一种实施方式中,所述获取单元51,可以
获取鉴权属性值集合、排序信息以及鉴权码生成规则;
则所述生成单元52,可以
根据所述排序信息,将所述鉴权属性值集合中的各鉴权属性值进行排序;
将排序后的鉴权属性值集合,通过所述鉴权码生成规则,生成鉴权码。
实施例6
基于相同的发明构思,实施例6供了一种鉴权系统,用于提高鉴权行为的扩展性和普遍性。图14为该系统的结构图,在实际应用中,可以假设第一终端为服务器,第二终端为客户端,该系统60可以包括:服务器、客户端、互联网,其中,
服务器,可以
获取第一鉴权属性值集合、以及鉴权码生成规则;
根据鉴权属性值集合,通过鉴权码生成规则,生成第一鉴权码。
具体地,服务器可以有数据库,用于存放鉴权码等信息,第一鉴权属性值集合可以是业务人员根据业务需要,预先设置的,也可以是根据特定时间触发的,如图15所示,服务器中可以包括后台、算法中心和前台,后台就可以设置鉴权规则,算法中心用于存放鉴权码生成规则,比如各种摘要算法等,以及生成第一鉴权码,每种鉴权规则都可以对应一个鉴权码生成规则,可以随时更改。
在一种实施方式中,算法中心还可以保存每种鉴权规则中对于鉴权属性值集合的排序信息,所以也就可以根据排序信息,将第一鉴权属性值集合中的各鉴权属性值进行排序;并将排序后的第一鉴权属性值集合,通过鉴权码生成规则,生成第一鉴权码。
在一种实施方式中,算法中心还可以在生成第一鉴权码之后,获取鉴权属性值集合对应的业务标识;并根据业务标识以及第一鉴权码,生成鉴权信息,比如该鉴权信息就可以是令牌token。令牌token可以存放在证书服务器中。前台可以与客户端进行对接,具体可以向客户端发送第一鉴权码,令牌token等。
客户端,可以
获取第一鉴权码、鉴权码生成规则以及对应的鉴权属性集合;
根据鉴权属性集合,从第二终端中获取第二鉴权属性值集合;
根据第二鉴权属性值集合以及鉴权码生成规则生成第二鉴权码;
根据第一鉴权码与第二鉴权码的匹配结果,进行鉴权。
具体地,如图16所示,客户端可以包括业务,加签器以及算法中心。当业务需要鉴权时,可以向服务器获取第一鉴权码、鉴权码生成规则以及对应的鉴权属性集合,加签器可以根据鉴权属性集合,从第二终端中获取第二鉴权属性值集合,再根据第二鉴权属性值集合以及鉴权码生成规则生成第二鉴权码;并根据第一鉴权码与第二鉴权码的匹配结果,进行鉴权。
在一种实施方式中,业务还可以获取到排序信息,那么加签器就可以根据鉴权属性集合,从客户端中获取第二鉴权属性值集合;根据第二鉴权属性值集合、所述排序信息以及鉴权码生成规则生成第二鉴权码。
在实际应用中,服务器可以生成令牌token,所以业务也可以获取到token,比如服务器根据业务发送的请求,通过互联网将对应的token发送给客户端,客户端将token发送给加签器,加签器获取到token后,对token进行解析,确定第一鉴权码以及业务标识;根据业务标识,向服务器的算法中心获取鉴权码生成规则以及对应的鉴权属性集合,同步到客户端的算法中心中,具体地,在同步的过程中,可以先检查客户端中是否存在对应的生成规则,如果没有则直接同步,如果存在可以通过版本号,进行更新。在同步鉴权码生成规则时,还可以连同排序信息(如果生成token时存在的话)一起同步。加签器在生成第二鉴权码后,跟解析出的第一鉴权码进行对比,从而完成鉴权。
采用实施例5提供的该系统,服务器先根据包含至少两个鉴权属性值的第一鉴权属性值集合,生成第一鉴权码,客户端业务需要鉴权时,从服务器获取第一鉴权码,以及鉴权属性集合,并从客户端获取第二鉴权属性值集合,并以与服务器生成第一鉴权码时相同的生成方法,生成第二鉴权码,通过两鉴权码的对比,进行鉴权。实现细粒度的权限控制,解决了现有技术仅针对一个鉴权属性进行鉴权导致的鉴权控制粒度粗的问题。另外将第一鉴权码与业务进行隔离,在进行添加、删除、修改鉴权规则后,无需修改业务内部,增强了鉴权行为的扩展性,并且在对每个业务进行鉴权时,无需去适应每个业务,而是依据从客户端获取到的第一鉴权码去鉴权,提高了鉴权规则的普遍性。此外,鉴权码也提高了鉴权过程中的安全性。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。