单点登录的校验装置、方法及计算机可读存储介质与流程

文档序号:14395562阅读:114来源:国知局

本发明涉及计算机技术领域,尤其涉及一种单点登录的校验装置、方法及计算机可读存储介质。



背景技术:

现有的单点登录技术中,其实现校验的方案一般是:在用户终端首次登录某应用系统时,服务器会生成一个唯一的令牌信息(token),将该令牌信息与该登录的账户建立映射关系,并将该令牌信息发送给用户终端,以供用户终端后续登录其他应用系统登录时,携带该令牌信息进行校验,可以不再输入账号、密码等信息,实现用户只需要登录一次就可以访问所有相互信任的应用系统。

该方案中,需要在服务器端建立数据库,维护大量的用户的账号信息以及为其分配的令牌信息以及他们之间的映射关系,在接收到包含有令牌信息的登录请求时,需要通过查询数据库中这个令牌信息与用户之间的对应关系,便能查询出用户信息,进而对用户的登录权限进行校验,但是方案不仅需要在服务器端维护大量的数据,而且每次校验都需要从数据库查询映射关系,导致校验效率低。



技术实现要素:

本发明提供一种单点登录的校验装置、方法及计算机可读存储介质,其主要目的在于减少服务器端维护的数据量,并提高单点登录的校验效率。

为实现上述目的,本发明提供一种单点登录的校验装置,该装置包括存储器和处理器,所述存储器中存储有可在所述处理器上运行的单点登录的校验程序,所述单点登录的校验程序被所述处理器执行时实现如下步骤:

当接收到用户终端发送的登录请求时,判断所述登录请求中是否包含有所述token信息;

若所述登录请求中包含有token信息,则从所述登录请求中获取所述token信息和用户数据,并记录接收到该登录请求的时间;

使用与第一预设加密算法对应的解密算法以及预先存储的密钥,对所述token信息解密,以获取所述token信息中包含的用户数据和凭证创建时间;

将所述登录请求中包含的用户数据与所述token信息中包含的用户数据进行对比,并判断记录的时间与所述凭证创建时间之间的时间差是否小于预设阈值;

若所述登录请求中包含的用户数据与所述token信息中包含的用户数据一致、且所述时间差小于预设阈值,则判定校验通过;

否则,判定校验失败。

可选地,所述单点登录的校验程序还可以被所述处理器执行,以在所述当接收到用户终端发送的登录请求时,判断所述登录请求中是否包含有所述token信息的步骤之后,以实现如下步骤:

若所述登录请求中没有token信息,则从所述登录请求中获取用户数据,其中,所述用户数据中至少包含有用户身份信息和业务系统标识;

将当前时间作为凭证创建时间,并获取预先存储的密钥;

基于所述密钥和第一预设加密算法,对所述用户数据和所述凭证创建时间进行加密处理;

获取加密处理得到的字符串,将所述字符串作为token信息,并将所述token信息发送至所述用户终端。

可选地,所述基于所述密钥和第一预设加密算法,对所述用户数据和所述凭证创建时间进行加密处理的步骤包括:

基于所述密钥和第一预设加密算法对所述用户数据进行加密以生成第一加密结果,基于第二预设加密算法对所述凭证创建时间加密以生成第二加密结果;

将所述第一加密结果和所述第二加密结果合成为一个字符串;

基于所述第二预设加密算法对所述字符串加密处理。

可选地,所述第一加密算法为高级加密标准aes算法,所述第二加密预设加密算法为base64算法。

可选地,所述单点登录的校验程序还可被所述处理器执行,以在所述当接收到用户终端发送的登录请求时,判断所述登录请求中是否包含有所述token信息的步骤之前,还实现如下步骤:

获取当前时间,根据当前时间以及预设的基准时间生成可变因子;

从加密机中获取一个随机字符串,使用第三预设加密算法对所述随机字符串和所述可变因子加密处理,以生成所述密钥并存储。

此外,为实现上述目的,本发明还提供一种单点登录的校验方法,该方法包括:

当接收到用户终端发送的登录请求时,判断所述登录请求中是否包含有所述token信息;

若否,则从所述登录请求中获取用户数据,其中,所述用户数据中至少包含有用户身份信息和业务系统标识;

将当前时间作为凭证创建时间,并获取预先存储的密钥;

基于所述密钥和第一预设加密算法,对所述用户数据和所述凭证创建时间进行加密处理;

获取加密处理得到的字符串,将所述字符串作为token信息,并将所述token信息发送至所述用户终端。

可选地,所述当接收到用户终端发送的登录请求时,判断所述登录请求中是否包含有所述token信息的步骤之后,所述方法还包括如下步骤:

若所述登录请求中包含有token信息,则从所述登录请求中获取所述token信息和用户数据,并记录接收到该登录请求的时间;

使用与所述第一预设加密算法对应解密算法以及所述密钥对所述token信息解密,以获取所述token信息中包含的用户数据和凭证创建时间;

将所述登录请求中包含的用户数据与所述token信息中包含的用户数据进行对比,并判断记录的时间与所述凭证创建时间之间的时间差是否小于预设阈值;

若所述登录请求中包含的用户数据与所述token信息中包含的用户数据一致、且所述时间差小于预设阈值,则判定校验通过;

否则,判定校验失败。

可选地,所述基于所述密钥和第一预设加密算法,对所述用户数据和所述凭证创建时间进行加密处理的步骤包括:

基于所述密钥和第一预设加密算法对所述用户数据进行加密以生成第一加密结果,基于第二预设加密算法对所述凭证创建时间加密以生成第二加密结果;

将所述第一加密结果和所述第二加密结果合成为一个字符串;

基于所述第二预设加密算法对所述字符串加密处理。

可选地,所述当接收到用户终端发送的登录请求时,判断所述登录请求中是否包含有所述token信息的步骤之前,所述方法还包括如下步骤:

获取当前时间,根据当前时间以及预设的基准时间生成可变因子;

从加密机中获取一个随机字符串,使用第三预设加密算法对所述随机字符串和所述可变因子加密处理,以生成所述密钥并存储。

此外,为实现上述目的,本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有单点登录的校验程序,所述单点登录的校验程序可被一个或者多个处理器执行,以实现如上所述的单点登录的校验方法的步骤。

本发明提出的单点登录的校验装置、方法及计算机可读存储介质,当用户终端发送的登录器请求中携带有token信息时,从登录请求中获取用户数据和token信息,并记录接收到该登录请求的时间,使用与第一预设加密算法对应的解密算法以及预先存储的密钥对token信息进行解密处理获取其中包含的用户数据和凭证创建时间,将登录请求中包含的用户数据与token信息中包含的用户进行对比,同时判断记录的时间与获取到的创建凭证时间之间的时间差是否小于预设阈值,若是,则判定该token消息合法,故判定校验通过,否则,判定校验失败,从上述方案可以看出,登录请求中携带的用于校验权限的token信息包含有经过加密处理的用户数据,以及一个凭证生成时间,对该token信息解密处理后,即可获取到其中的用户数据和凭证生成时间,从而与登录请求中包含的用户数据进行对比,以实现对token信息合法性的校验,该方案不需要在服务器端维护token信息与用户数据之间的映射关系,也不需要每次验证都根据映射关系查找对应的用户信息,从而实现减少需要维护的数据量,以及提高单点登录的校验效率的效果。

附图说明

图1为本发明单点登录的校验装置较佳实施例的示意图;

图2为本发明单点登录的校验装置一实施例中单点登录的校验程序的程序模块示意图;

图3为本发明单点登录的校验方法较佳实施例的流程图。

本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。

具体实施方式

应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。

本发明提供一种单点登录的校验装置。参照图1所示,为本发明单点登录的校验装置较佳实施例的示意图。

在本实施例中,该单点登录的校验装置至少包括存储器11、处理器12,通信总线13,以及网络接口14。

其中,存储器11至少包括一种类型的可读存储介质,所述可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、磁性存储器、磁盘、光盘等。存储器11在一些实施例中可以是单点登录的校验装置的内部存储单元,例如该单点登录的校验装置的硬盘。存储器11在另一些实施例中也可以是单点登录的校验装置的外部存储设备,例如单点登录的校验装置上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,存储器11还可以既包括单点登录的校验装置的内部存储单元也包括外部存储设备。存储器11不仅可以用于存储安装于单点登录的校验装置的应用软件及各类数据,例如单点登录的校验程序的代码等,还可以用于暂时地存储已经输出或者将要输出的数据。

处理器12在一些实施例中可以是一中央处理器(centralprocessingunit,cpu)、控制器、微控制器、微处理器或其他数据处理芯片,用于运行存储器11中存储的程序代码或处理数据,例如执行单点登录的校验程序等。

通信总线13用于实现这些组件之间的连接通信。

网络接口14可选的可以包括标准的有线接口、无线接口(如wi-fi接口),通常用于在该装置与其他电子设备之间建立通信连接。

图1仅示出了具有组件11-14以及单点登录的校验程序的单点登录的校验装置,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。

可选地,该装置还可以包括用户接口,用户接口可以包括显示器(display)、输入单元比如键盘(keyboard),可选的用户接口还可以包括标准的有线接口、无线接口。可选地,在一些实施例中,显示器可以是led显示器、液晶显示器、触控式液晶显示器以及oled(organiclight-emittingdiode,有机发光二极管)触摸器等。其中,显示器也可以适当的称为显示屏或显示单元,用于显示在单点登录的校验装置中处理的信息以及用于显示可视化的用户界面。

在图1所示的装置实施例中,存储器11中存储有单点登录的校验程序;处理器12执行存储器11中存储的单点登录的校验程序时实现如下步骤:

当接收到用户终端发送的登录请求时,判断所述登录请求中是否包含有所述token信息。

若所述登录请求中包含有token信息,则从所述登录请求中获取所述token信息和用户数据,并记录接收到该登录请求的时间。

该实施例提出的单点登录的校验装置可以是单点登录服务器。校验装置接收到的登录请求可以是用户终端直接发送的,也可以是用户终端发送至业务系统后,由业务系统重定向到校验装置的。校验装置检测该登录请求中是否有token信息,若包含有token信息,则说明该用户终端的本次登录不是首次登录,上述token信息是在之前登录时,由校验装置为其分配的。

上述校验装置为用户终端分配token信息的实现方式为:在用户终端首次登录业务系统时,或者当检测到登录请求中携带的token失效时,为用户终端分配token。

具体地,作为一种实施方式,若所述登录请求中没有token信息,则从所述登录请求中获取用户数据,其中,所述用户数据中至少包含有用户身份信息和业务系统标识;将当前时间作为凭证创建时间,并获取预先存储的密钥;基于所述密钥和第一预设加密算法,对所述用户数据和所述凭证创建时间进行加密处理;获取加密处理得到的字符串,将所述字符串作为token信息,并将所述token信息发送至所述用户终端。

在一些实施例中,上述用户数据可以包括但不限于以下数据:用户身份信息、业务系统标识、用户ip地址、单点登录服务器分组、代理所在主机的ip地址等信息。从登录请求中获取上述信息,将上述信息组合起来,其中,信息之间利用“|”进行区分。在获取到用户数据后,获取服务器中预先存储的密钥,并使用该密钥和第一预设加密算法对用户数据和凭证创建时间进行加密处理,其中,凭证创建时间为当前时间,即进行加密处理时的时间。可选地,在一些实施例中,可以将用户数据和凭证创建时间分别加密处理后,再对他们的组合结果再进行一次加密处理。

具体地,基于所述密钥和第一预设加密算法,对所述用户数据和所述凭证创建时间进行加密处理的步骤包括:

基于所述密钥和第一预设加密算法对所述用户数据进行加密以生成第一加密结果,基于第二预设加密算法对所述凭证创建时间加密以生成第二加密结果;将所述第一加密结果和所述第二加密结果合成为一个字符串;基于所述第二预设加密算法对所述字符串加密处理。

例如,密钥为pk(v),凭证创建时间为ctime,则按照上述步骤加密处理后得到的结果entoken=base64((aes(pk(v),detoken)||base64(ctime)),其中,detoken为用户数据。上述第一预设加密算法可以是aes算法,第二预设加密算法可以是base64算法,在其他实施例中,可以根据需要选择其他加密算法。

关于上述过程中使用到的密钥,可以由校验装置从其他渠道获取密钥后存储,或者由校验装置按照以下步骤生成密钥:

获取当前时间,根据当前时间以及预设的基准时间生成可变因子;从加密机中获取一个随机字符串,使用第三预设加密算法对所述随机字符串和所述可变因子加密处理,以生成所述密钥并存储。

具体地,获取当前时间ctime以及预设的基准时间btime,计算可变因子v=(ctime-btime)/btime,从加密机中获取一个随机字符串seed,对该可变因子v以及随机字符串seed加密处理,其中第三预设加密算法可以是hmac_sha_1算法。生成密钥的具体过程如下:

pk(v)=hotp(seed,v)||hotp(seed,v+1),其中,“||”为连接符;

hotp(k,c)=(hmac_sha_1(k’,c’)&0x7fffffff)mod10d,其中,k’为k的散列数据,c’为c的散列数据,将seed和v分别作为k、c值带入上述公式计算得到hotp(seed,v)和hotp(seed,v+1)。采用hmac_sha_1算法进行hash散列,会得到一个20字节40位的十六进制数字,mod为取余运算,与10的d次方模运算得到d位的一个数字口令。其中,hotp是一种基于hmac的一次性口令算法,hmac(hashmessageauthenticationcode,散列消息鉴别码)算法主要是利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出,它可以与任何迭代散列函数捆绑使用,例如与sha_1(securehashalgorithm,安全哈希散列)算法捆绑使用构成hmac_sha_1算法。

按照上述方式生成token信息后,校验装置将加密处理得到的结果作为token信息发送给用户终端进行存储,用户终端在后续发送的登录请求中携带该token信息,例如,向与上述业务系统之间具有信任关系的其他业务系统发送登录请求时,携带该token信息,可以实现只需要登录一次就可以访问所有相互信任的应用系统。

若登录请求中包含有token信息,则获取请求中包含的token信息和用户数据,同时记录收到该登录请求时的时间,接下来对获取到的token信息的合法性进行校验。

使用与第一预设加密算法对应的解密算法以及预先存储的密钥,对所述token信息解密,以获取所述token信息中包含的用户数据和凭证创建时间。

将所述登录请求中包含的用户数据与所述token信息中包含的用户数据进行对比,并判断记录的时间与所述凭证创建时间之间的时间差是否小于预设阈值。

若所述登录请求中包含的用户数据与所述token信息中包含的用户数据一致、且所述时间差小于预设阈值,则判定校验通过。

否则,判定校验失败。

对token信息进行解密处理,解密的过程实质上是对上述加密过程的一个逆运算,按照第一预设加密算法和预先存储的密钥进行解密。

以entoken=base64[aes(pk(v),detoken)||base64(ctime)]为例,则解密时,按照如下过程:

按照base64.decode(base64[aes(pk(v),detoken)||base64(ctime))运算,得到aes(pk(v),detoken)和base64(ctime),再经过如下运算得到其中包含的用户数据detoken和凭证创建时间ctime:

detoken=base64.decode(aes.decode(detoken’)),其中,detoken’=aes(pk(v),detoken);

ctime=base64.decode(ctime’),其中,ctime’=base64(ctime)。

将从token信息中获取到的用户数据和登录请求中包含的用户数据进行对比,同时判断token信息中包含的凭证创建时间与当前时间之间的时间差与是否小于该预设阈值,若token信息中获取到的用户数据和登录请求中包含的用户数据一致,且时间差小于该预设阈值,则校验通过,允许用户直接登录业务系统,若登录请求中包含的用户数据与token信息中包含的用户数据不一致、及/或时间差大于或等于预设阈值,判定校验失败,向用户终端返回登录界面,以供用户输入账号和密码后重新登录。需要说明的是,上述预设阈值为校验装置处设置的一个token信息的有效期,当超出这个阈值,则认为该token信息失效,需要用户终端重新认证,重新获取新的token信息。

本实施例提出的单点登录的校验装置,当用户终端发送的登录器请求中携带有token信息时,从登录请求中获取用户数据和token信息,并记录接收到该登录请求的时间,使用与第一预设加密算法对应的解密算法以及预先存储的密钥对token信息进行解密处理获取其中包含的用户数据和凭证创建时间,将登录请求中包含的用户数据与token信息中包含的用户进行对比,同时判断记录的时间与获取到的创建凭证时间之间的时间差是否小于预设阈值,若是,则判定该token消息合法,故判定校验通过,否则,判定校验失败,从上述方案可以看出,登录请求中携带的用于校验权限的token信息包含有经过加密处理的用户数据,以及一个凭证生成时间,对该token信息解密处理后,即可获取到其中的用户数据和凭证生成时间,从而与登录请求中包含的用户数据进行对比,以实现对token信息合法性的校验,该方案不需要在服务器端维护token信息与用户数据之间的映射关系,也不需要每次验证都根据映射关系查找对应的用户信息,从而实现减少需要维护的数据量,以及提高单点登录的校验效率的效果。

可选地,在其他的实施例中,单点登录的校验程序还可以被分割为一个或者多个模块,一个或者多个模块被存储于存储器11中,并由一个或多个处理器(本实施例为处理器12)所执行以完成本发明,本发明所称的模块是指能够完成特定功能的一系列计算机程序指令段,用于描述单点登录的校验程序在单点登录的校验装置中的执行过程。

例如,参照图2所示,为本发明单点登录的校验装置一实施例中的单点登录的校验程序的程序模块示意图,该实施例中,单点登录的校验程序可以被分割为判断模块10、获取模块20、解密模块30和校验模块40,示例性地:

判断模块10用于:当接收到用户终端发送的登录请求时,判断所述登录请求中是否包含有所述token信息;

获取模块20用于:若所述登录请求中包含有token信息,则从所述登录请求中获取所述token信息和用户数据,并记录接收到该登录请求的时间;

解密模块30用于:使用与第一预设加密算法对应的解密算法以及预先存储的密钥,对所述token信息解密,以获取所述token信息中包含的用户数据和凭证创建时间;

校验模块40用于:将所述登录请求中包含的用户数据与所述token信息中包含的用户数据进行对比,并判断记录的时间与所述凭证创建时间之间的时间差是否小于预设阈值;

以及,若所述登录请求中包含的用户数据与所述token信息中包含的用户数据一致、且所述时间差小于预设阈值,则判定校验通过;否则,判定校验失败。

上述判断模块10、获取模块20、解密模块30和校验模块40等程序模块被执行时所实现的功能或操作步骤与上述实施例大体相同,在此不再赘述。

此外,本发明还提供一种单点登录的校验方法。参照图3所示,为本发明单点登录的校验方法较佳实施例的流程图。该方法可以由一个装置执行,该装置可以由软件和/或硬件实现。

在本实施例中,单点登录的校验方法包括:

步骤s10,当接收到用户终端发送的登录请求时,判断所述登录请求中是否包含有所述token信息。

步骤s20,若所述登录请求中包含有token信息,则从所述登录请求中获取所述token信息和用户数据,并记录接收到该登录请求的时间。

以下以单点登录服务器为执行主体对实施例提出的单点登录的校验方法进行说明。单点登录服务器接收到的登录请求可以是用户终端直接发送的,也可以是用户终端发送至业务系统后,由业务系统重定向到单点登录服务器的。单点登录服务器检测该登录请求中是否有token信息,若包含有token信息,则说明该用户终端的本次登录不是首次登录,上述token信息是在之前登录时,由单点登录服务器为其分配的。

上述单点登录服务器为用户终端分配token信息的实现方式为:在用户终端首次登录业务系统时,或者当检测到登录请求中携带的token失效时,为用户终端分配token。

具体地,作为一种实施方式,若所述登录请求中没有token信息,则从所述登录请求中获取用户数据,其中,所述用户数据中至少包含有用户身份信息和业务系统标识;将当前时间作为凭证创建时间,并获取预先存储的密钥;基于所述密钥和第一预设加密算法,对所述用户数据和所述凭证创建时间进行加密处理;获取加密处理得到的字符串,将所述字符串作为token信息,并将所述token信息发送至所述用户终端。

在一些实施例中,上述用户数据可以包括但不限于以下数据:用户身份信息、业务系统标识、用户ip地址、单点登录服务器分组、代理所在主机的ip地址等信息。从登录请求中获取上述信息,将上述信息组合起来,其中,信息之间利用“|”进行区分。在获取到用户数据后,获取服务器中预先存储的密钥,并使用该密钥和第一预设加密算法对用户数据和凭证创建时间进行加密处理,其中,凭证创建时间为当前时间,即进行加密处理时的时间。可选地,在一些实施例中,可以将用户数据和凭证创建时间分别加密处理后,再对他们的组合结果再进行一次加密处理。

具体地,基于所述密钥和第一预设加密算法,对所述用户数据和所述凭证创建时间进行加密处理的步骤包括:

基于所述密钥和第一预设加密算法对所述用户数据进行加密以生成第一加密结果,基于第二预设加密算法对所述凭证创建时间加密以生成第二加密结果;将所述第一加密结果和所述第二加密结果合成为一个字符串;基于所述第二预设加密算法对所述字符串加密处理。

例如,密钥为pk(v),凭证创建时间为ctime,则按照上述步骤加密处理后得到的结果entoken=base64((aes(pk(v),detoken)||base64(ctime)),其中,detoken为用户数据。上述第一预设加密算法可以是aes算法,第二预设加密算法可以是base64算法,在其他实施例中,可以根据需要选择其他加密算法。

关于上述过程中使用到的密钥,可以由单点登录服务器从其他渠道获取密钥后存储,或者由单点登录服务器按照以下步骤生成密钥:

获取当前时间,根据当前时间以及预设的基准时间生成可变因子;从加密机中获取一个随机字符串,使用第三预设加密算法对所述随机字符串和所述可变因子加密处理,以生成所述密钥并存储。

具体地,获取当前时间ctime以及预设的基准时间btime,计算可变因子v=(ctime-btime)/btime,从加密机中获取一个随机字符串seed,对该可变因子v以及随机字符串seed加密处理,其中第三预设加密算法可以是hmac_sha_1算法。生成密钥的具体过程如下:

pk(v)=hotp(seed,v)||hotp(seed,v+1),其中,“||”为连接符;

hotp(k,c)=(hmac_sha_1(k’,c’)&0x7fffffff)mod10d,其中,k’为k的散列数据,c’为c的散列数据,将seed和v分别作为k、c值带入上述公式计算得到hotp(seed,v)和hotp(seed,v+1)。采用hmac_sha_1算法进行hash散列,会得到一个20字节40位的十六进制数字,mod为取余运算,与10的d次方模运算得到d位的一个数字口令。其中,hotp是一种基于hmac的一次性口令算法,hmac(hashmessageauthenticationcode,散列消息鉴别码)算法主要是利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出,它可以与任何迭代散列函数捆绑使用,例如与sha_1(securehashalgorithm,安全哈希散列)算法捆绑使用构成hmac_sha_1算法。

按照上述方式生成token信息后,单点登录服务器将加密处理得到的结果作为token信息发送给用户终端进行存储,用户终端在后续发送的登录请求中携带该token信息,例如,向与上述业务系统之间具有信任关系的其他业务系统发送登录请求时,携带该token信息,可以实现只需要登录一次就可以访问所有相互信任的应用系统。

若登录请求中包含有token信息,则获取请求中包含的token信息和用户数据,同时记录收到该登录请求时的时间,接下来对获取到的token信息的合法性进行校验。

步骤s30,使用与第一预设加密算法对应的解密算法以及预先存储的密钥,对所述token信息解密,以获取所述token信息中包含的用户数据和凭证创建时间。

步骤s40,将所述登录请求中包含的用户数据与所述token信息中包含的用户数据进行对比,并判断记录的时间与所述凭证创建时间之间的时间差是否小于预设阈值。

步骤s50,若所述登录请求中包含的用户数据与所述token信息中包含的用户数据一致、且所述时间差小于预设阈值,则判定校验通过。

步骤s60,否则,判定校验失败。

对token信息进行解密处理,解密的过程实质上是对上述加密过程的一个逆运算,按照第一预设加密算法和预先存储的密钥进行解密。

以entoken=base64[aes(pk(v),detoken)||base64(ctime)]为例,则解密时,按照如下过程:

按照base64.decode(base64[aes(pk(v),detoken)||base64(ctime))运算,得到aes(pk(v),detoken)和base64(ctime),再经过如下运算得到其中包含的用户数据detoken和凭证创建时间ctime:

detoken=base64.decode(aes.decode(detoken’)),其中,detoken’=aes(pk(v),detoken);

ctime=base64.decode(ctime’),其中,ctime’=base64(ctime)。

将从token信息中获取到的用户数据和登录请求中包含的用户数据进行对比,同时判断token信息中包含的凭证创建时间与当前时间之间的时间差与是否小于该预设阈值,若token信息中获取到的用户数据和登录请求中包含的用户数据一致,且时间差小于该预设阈值,则校验通过,允许用户直接登录业务系统,若登录请求中包含的用户数据与token信息中包含的用户数据不一致、及/或时间差大于或等于预设阈值,判定校验失败,向用户终端返回登录界面,以供用户输入账号和密码后重新登录。需要说明的是,上述预设阈值为单点登录服务器处设置的一个token信息的有效期,当超出这个阈值,则认为该token信息失效,需要用户终端重新认证,重新获取新的token信息。

本实施例提出的单点登录的校验方法,当用户终端发送的登录器请求中携带有token信息时,从登录请求中获取用户数据和token信息,并记录接收到该登录请求的时间,使用与第一预设加密算法对应的解密算法以及预先存储的密钥对token信息进行解密处理获取其中包含的用户数据和凭证创建时间,将登录请求中包含的用户数据与token信息中包含的用户进行对比,同时判断记录的时间与获取到的创建凭证时间之间的时间差是否小于预设阈值,若是,则判定该token消息合法,故判定校验通过,否则,判定校验失败,从上述方案可以看出,登录请求中携带的用于校验权限的token信息包含有经过加密处理的用户数据,以及一个凭证生成时间,对该token信息解密处理后,即可获取到其中的用户数据和凭证生成时间,从而与登录请求中包含的用户数据进行对比,以实现对token信息合法性的校验,该方案不需要在服务器端维护token信息与用户数据之间的映射关系,也不需要每次验证都根据映射关系查找对应的用户信息,从而实现减少需要维护的数据量,以及提高单点登录的校验效率的效果。

此外,本发明实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有单点登录的校验程序,所述单点登录的校验程序可被一个或多个处理器执行,以实现如下操作:

当接收到用户终端发送的登录请求时,判断所述登录请求中是否包含有所述token信息;

若所述登录请求中包含有token信息,则从所述登录请求中获取所述token信息和用户数据,并记录接收到该登录请求的时间;

使用与第一预设加密算法对应的解密算法以及预先存储的密钥,对所述token信息解密,以获取所述token信息中包含的用户数据和凭证创建时间;

将所述登录请求中包含的用户数据与所述token信息中包含的用户数据进行对比,并判断记录的时间与所述凭证创建时间之间的时间差是否小于预设阈值;

若所述登录请求中包含的用户数据与所述token信息中包含的用户数据一致、且所述时间差小于预设阈值,则判定校验通过;

否则,判定校验失败。

进一步地,所述单点登录的校验程序被处理器执行时还实现如下操作:

若所述登录请求中没有token信息,则从所述登录请求中获取用户数据,其中,所述用户数据中至少包含有用户身份信息和业务系统标识;

将当前时间作为凭证创建时间,并获取预先存储的密钥;

基于所述密钥和第一预设加密算法,对所述用户数据和所述凭证创建时间进行加密处理;

获取加密处理得到的字符串,将所述字符串作为token信息,并将所述token信息发送至所述用户终端。

进一步地,所述基于所述密钥和第一预设加密算法,对所述用户数据和所述凭证创建时间进行加密处理的步骤包括:

基于所述密钥和第一预设加密算法对所述用户数据进行加密以生成第一加密结果,基于第二预设加密算法对所述凭证创建时间加密以生成第二加密结果;

将所述第一加密结果和所述第二加密结果合成为一个字符串;

基于所述第二预设加密算法对所述字符串加密处理。

本发明计算机可读存储介质具体实施方式与上述单点登录的校验装置和方法各实施例基本相同,在此不作累述。

需要说明的是,上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。并且本文中的术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在如上所述的一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。

以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

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