登录鉴权方法、装置、电子设备以及可读存储介质与流程

文档序号:22334208发布日期:2020-09-25 18:07阅读:75来源:国知局
登录鉴权方法、装置、电子设备以及可读存储介质与流程

本发明涉及互联网技术领域,特别是涉及一种登录鉴权方法、装置、电子设备以及可读存储介质。



背景技术:

在互联网技术领域,鉴权是指服务器验证终端是否具有访问系统、查看信息或者获取资源的权利。相关技术中,一些互联网企业的服务器采用令牌技术对终端进行鉴权。该技术的优点在于可用性较高,该技术的缺点在于安全性较低。例如当网络攻击者窃取到服务器的令牌加密算法,并利用窃取到的加密算法对服务器实施网络攻击时,将导致服务器的鉴权操作失效,使所有用户数据存在被窃取的风险。

还有一些互联网企业的服务器采用session技术(也称为会话技术,是一种用于区分不同用户的技术)对终端进行鉴权。该技术的优点在于安全性较高,该技术的缺点在于可用性较低。例如在服务器存储会话数据期间,用于存储会话数据的session数据库故障,将导致会话数据存储失败。将来在基于会话数据进行鉴权操作时,由于不能读取到会话数据,而导致鉴权操作不可用,进而导致终端鉴权不能通过,终端无法访问系统、查看信息或者获取资源。

可见,现有的鉴权技术存在安全性较低或可用性较低等问题,这些问题会导致用户数据存在较大的泄露风险,或者导致服务器的服务不可用。



技术实现要素:

本发明实施例的目的在于提供一种登录鉴权方法、装置、电子设备以及可读存储介质,旨在使鉴权流程兼具安全性和可用性。具体技术方案如下:

在本发明实施例的第一方面,首先提供了一种登录鉴权方法,应用于服务器,所述方法包括:

接收终端发送的令牌,并基于所述令牌对所述终端执行第一鉴权操作,获得第一鉴权结果;

在所述第一鉴权结果表征鉴权通过的情况下,根据所述令牌,判断所述服务器是否存储有所述终端对应的会话数据;

在所述服务器存储有所述终端对应的会话数据的情况下,基于所述终端对应的会话数据对所述终端执行第二鉴权操作,获得第二鉴权结果。

在本发明实施例的第二方面,提供了另一种登录鉴权方法,应用于服务器,所述方法包括:

接收终端发送的令牌,并基于所述令牌对所述终端执行第一鉴权操作,获得第一鉴权结果;

根据所述令牌,判断所述服务器是否存储有所述终端对应的会话数据;

在所述服务器存储有所述终端对应的会话数据的情况下,基于所述终端对应的会话数据对所述终端执行第二鉴权操作,获得第二鉴权结果;

根据所述第一鉴权结果和所述第二鉴权结果,判断所述终端是否具有权限。

在本发明实施例的第三方面,还提供了一种登录鉴权装置,设置于服务器,所述装置包括:

第一鉴权模块,用于接收终端发送的令牌,并基于所述令牌对所述终端执行第一鉴权操作,获得第一鉴权结果;

判断模块,用于在所述第一鉴权结果表征鉴权通过的情况下,根据所述令牌,判断所述服务器是否存储有所述终端对应的会话数据;

第二鉴权模块,用于在所述服务器存储有所述终端对应的会话数据的情况下,基于所述终端对应的会话数据对所述终端执行第二鉴权操作,获得第二鉴权结果。

在本发明实施例的第四方面,提供了另一种登录鉴权装置,设置于服务器,所述装置包括:

第一鉴权模块,用于接收终端发送的令牌,并基于所述令牌对所述终端执行第一鉴权操作,获得第一鉴权结果;

判断模块,用于根据所述令牌,判断所述服务器是否存储有所述终端对应的会话数据;

第二鉴权模块,用于在所述服务器存储有所述终端对应的会话数据的情况下,基于所述终端对应的会话数据对所述终端执行第二鉴权操作,获得第二鉴权结果;

权限确定模块,用于根据所述第一鉴权结果和所述第二鉴权结果,判断所述终端是否具有权限。

在本发明实施例的第五方面,还提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;

存储器,用于存放计算机程序;

处理器,用于执行存储器上所存放的程序时,实现本发明实施例的第一方面或第二方面所述的方法步骤。

在本发明实施的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述的任一登录鉴权方法。

在本发明实施的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述的任一登录鉴权方法。

通过实施本发明实施例提供的登录鉴权方法,服务器在接收终端发送的令牌后,基于该令牌对终端执行第一鉴权操作。其中,由于令牌技术的可用性较高,因此本发明确保了鉴权可用性。

此外,在第一鉴权结果表征鉴权通过的情况下,也即在第一鉴权操作通过的情况下,根据令牌,判断服务器是否存储有终端对应的会话数据。并在确定服务器存储有终端对应的会话数据的情况下,也即第二鉴权操作可用的情况下,基于终端对应的会话数据对终端执行第二鉴权操作,获得第二鉴权结果。从而在第二鉴权操作可用的情况下,进一步提高了鉴权安全性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。

图1是本发明一实施例提出的登录鉴权方法的流程图;

图2是本发明另一实施例提出的登录鉴权方法的流程图;

图3是本发明又一实施例提出的登录鉴权方法的交互示意图;

图4是本发明另一实施例提出的登录鉴权方法的流程图;

图5(a)是本发明一实施例提出的登录鉴权装置的示意图;

图5(b)是本发明另一实施例提出的登录鉴权装置的示意图;

图5(c)是本发明另一实施例提出的登录鉴权装置的示意图;

图6是本发明另一实施例提出的登录鉴权装置的示意图;

图7时本发明一实施例提出的电子设备的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行描述。

在互联网技术领域,终端与服务器交互,旨在访问系统、查看信息或者获取资源。服务器为了确保数据安全,需要对终端进行鉴权,在确定终端具有权限的情况下,才向终端开放系统、展示信息或者提供资源。相关技术中,一些互联网企业的服务器采用令牌技术对终端进行鉴权。该技术的优点在于可用性较高,该技术的缺点在于安全性较低。例如当网络攻击者窃取到服务器的令牌加密算法,并利用窃取到的加密算法对服务器实施网络攻击时,将导致服务器的鉴权操作失效,使所有用户数据存在被窃取的风险。

还有一些互联网企业的服务器采用session技术(也称为会话技术,用于区分不同用户的技术)对终端进行鉴权。该技术的优点在于安全性较高,该技术的缺点在于可用性较低。例如在服务器存储会话数据期间,用于存储会话数据的数据库故障,将导致会话数据存储失败。将来在基于会话数据进行鉴权操作时,由于不能读取到会话数据,而导致鉴权操作不可用,进而导致终端鉴权不能通过,终端无法访问系统、查看信息或者获取资源。

可见,现有的鉴权技术存在安全性较低或可用性较低等问题。有鉴于此,本发明以一种新颖的方式将令牌技术和session技术结合,通过以下实施例提出鉴权方法、装置、电子设备以及可读存储介质,该鉴权方法兼具安全性和可用性。

参考图1,图1是本发明一实施例提出的登录鉴权方法的流程图,该登录鉴权方法应用于服务器。如图1所示,该方法包括以下步骤:

步骤s11:接收终端发送的令牌,并基于所述令牌对所述终端执行第一鉴权操作,获得第一鉴权结果。

本发明中,终端的类型包括但不限于:手机、平板电脑、笔记本电脑、台式电脑等。

本发明中,终端向服务器发送的令牌,可以是服务器预先为该终端签发并发送给该终端的。具体实现时,用户在利用该终端登录其账号之后,服务器为该终端生成令牌,并将该令牌发送给该终端进行保存。终端在后续向服务器发送请求时,例如个人信息查看请求、资源获取请求、系统访问请求等,在请求中携带终端预先保存的令牌。如此,服务器可以在接收到该令牌之后,基于该令牌对该终端执行鉴权操作。

在本发明的一些实施例中,令牌中可以包括字符串和该字符串的加密字符串。其中,字符串的加密字符串是服务器利用其掌握的私钥或加密算法对字符串进行加密后所获得的加密结果。

举例说明,服务器在基于令牌执行第一鉴权操作时,具体可以进行以下几种校验中的至少一种:算法校验、有效期校验、环境参数校验。

其中,算法校验是指:服务器在接收到终端发送的令牌后,利用其掌握的私钥或加密算法,对令牌中的字符串进行加密,并将加密后的结果与令牌中原有的加密字符串进行比较,在两者一致的情况下,确定该终端通过算法校验。

有效期校验是指:令牌的字符串中包括有效期字段,服务器接收到终端返回的所述令牌时,如果令牌返回的时间未超过该令牌中记录的有效期,则确定该终端通过有效期校验。或者,服务器在为终端生成令牌时记录了时间戳,服务器在接收到终端返回的所述令牌时,根据记录的时间戳和当前时间,计算两者的时间差,并根据该时间差判断终端返回令牌是否超时,如果未超时,则确定该终端通过有效期校验。

环境参数校验是指:令牌的字符串中包括有用户标识字段,并且服务器记录有用户标识,服务器在接收到终端返回的所述令牌时,比较该令牌中的用户标识字段和服务度记录的用户标识,如果两者一致,则确定该终端通过环境参数校验。其中,用户标识可以是:用户名、用户编号或者用户电话号码等。

需要说明的是,上述关于第一鉴权操作的举例仅作为示例,本发明对第一鉴权操作的具体方式不做限定。

本发明中,第一鉴权操作所获得的第一鉴权结果可以表征鉴权通过,也可以表征鉴权未通过。其中,在第一鉴权结果表征鉴权未通过的情况下,确定所述终端不具有权限。

为便于理解,假设服务器在执行第一鉴权操作时,具体执行了算法校验、有效期校验、环境参数校验等三种校验。在三种校验均通过的情况下,得到的第一鉴权结果表征鉴权通过,否则得到的第一鉴权结果表征鉴权未通过。如果第一鉴权结果表征鉴权通过,则执行下述步骤s12。如果第一鉴权结果表征鉴权未通过,则确定终端不具有权限,并终止整个鉴权流程。换言之,如果三种校验均通过,则执行下述步骤s12,否则确定终端不具有权限,并终止整个鉴权流程。

步骤s12:在所述第一鉴权结果表征鉴权通过的情况下,根据所述令牌,判断所述服务器是否存储有所述终端对应的会话数据;

其中,会话数据是服务器为区分不同账号而为各个账号存储的数据。相关技术中,会话数据也可称为session数据,每个账号分别对应不同的会话数据。由于账号在与服务器交互时,具体是依托于登录该账号的终端与服务器交互。因此账号对应的会话数据,也可以称为终端对应的会话数据。换言之,本发明中终端对应的会话数据,即是在该终端上登录的账号所对应的会话数据。

本发明具体实现时,服务器具体是根据所述令牌中的信息,判断所述服务器是否存储有所述终端对应的会话数据。其中,在服务器存储有终端对应的会话数据和服务器未存储有终端对应的会话数据这两种情况下,令牌中分别对应有不同的信息。

在本发明的一些具体实施方式中,可以为令牌增加一个预设字段,这个预设字段中的不同内容分别用于表征:服务器存储有终端对应的会话数据、服务端未存储有终端对应的会话数据。如此,在执行上述步骤s12时,具体地,可以判断所述令牌中的预设字段的字段内容是否为目标内容,如果所述字段内容是目标内容,则确定所述服务器存储有所述终端对应的会话数据;如果所述字段内容不是目标内容,则确定所述服务器未存储有所述终端对应的会话数据。

为便于理解,假设在令牌中增加has_session这一预设字段,如果服务器预先成功为终端创建了会话数据,并成功存储了该会话数据,则服务器在为终端生成令牌期间,可以使得令牌的预设字段has_session被填充为目标内容,例如字符“1”。如果服务器未能成功为终端创建会话数据,或者未能成功存储终端的会话数据,则服务器在为终端生成令牌期间,可以使得令牌的预设字段has_session被填充为其他内容,例如字符“0”。

如此,服务器在执行上述步骤s12时,可以通过判断预设字段has_session中的字段内容是否为“1”,进而判断服务器是否存储有终端对应的会话数据。如果预设字段has_session中的字段内容是“1”,则确定服务器存储有终端对应的会话数据。如果预设字段has_session中的字段内容不是“1”,则确定服务器未存储终端对应的会话数据。

在本发明的一些具体实施方式中,在执行上述步骤s12时,具体地,可以判断所述令牌中是否包含预设标识,如果所述令牌包含预设标识,则确定所述服务器存储有所述终端对应的会话数据;如果所述令牌不包含预设标识,则确定所述服务器未存储有所述终端对应的会话数据。

具体实现时,令牌中可以包括字符串和该字符串的加密字符串,其中,字符串的加密字符串是服务器利用其掌握的私钥或加密算法对字符串进行加密后所获得的加密结果。所述预设标识是所述字符串中的一个字段,相应地,所述加密字符串中包含所述预设标识被加密后的字段。其中,预设标识可以是以下几种形式中的任意一种:指定数字、指定字符、指定字母等。

为便于理解,假设预设标识可以是指定字符“hassession”。如果服务器预先成功为终端创建了会话数据,并成功存储了该会话数据,则服务器在为终端生成令牌期间,可以在令牌中插入指定字符“hassession”。如果服务器未能成功为终端创建会话数据,或者未能成功存储终端的会话数据,则服务器在为终端生成令牌期间,不在令牌中插入指定字符“hassession”。

如此,服务器在执行上述步骤s12时,可以通过判断令牌中是否包含指定字符“hassession”,进而判断服务器是否存储有终端对应的会话数据。如果令牌中包含指定字符“hassession”,则确定服务器存储有终端对应的会话数据。如果令牌中不包含指定字符“hassession”,则确定服务器未存储终端对应的会话数据。

此外,服务器除了可以根据令牌中的信息,判断服务器是否存储有终端对应的会话数据。本发明具体实现时,服务器也可以根据令牌的加密方式,判断服务器是否存储有终端对应的会话数据。

为便于理解,如果服务器预先成功为终端创建了会话数据,并成功存储了该会话数据,则服务器在为终端生成令牌期间,可以利用第一加密算法(或者第一秘钥)对令牌进行加密。如果服务器未能成功为终端创建会话数据,或者未能成功存储终端的会话数据,则服务器在为终端生成令牌期间,可以利用第二加密算法(或者第二秘钥)对令牌进行加密。如此,服务器在执行上述步骤s12时,如果服务器基于第一加密算法对令牌校验通过,则确定服务器存储有终端对应的会话数据。如果服务器基于第二加密算法对令牌校验通过,则确定服务器未存储终端对应的会话数据。其中,通过加密算法对令牌进行校验的具体方式,可参考上文,此处不做赘述。

本发明通过令牌来体现服务器是否存储有终端对应的会话数据,其优点在于:由于本发明通过令牌来体现服务器是否存储有终端对应的会话数据。服务器将令牌发送给终端之后,终端存储该令牌。当终端向服务器再次发起请求时,会携带该令牌,服务器可以根据该令牌来判断该终端是否具有对应的会话数据。如此,可以确保服务器能顺利得知当前终端是否具有对应的会话数据,进而提高基于会话数据的鉴权操作的可用性。

而如果不通过令牌来体现服务器是否存储有终端对应的会话数据,而通过其他方式来存储各终端有无对应的会话数据这一信息,则难以确保基于会话数据的鉴权操作的可用性。为便于理解,假设服务器单独开辟一个存储系统,来专门对各终端有无对应的会话数据这一信息进行存储,例如服务器新建一个数据库,该数据库存储有多个键值对,每个键值对的键名表示一个终端,键值对的键值表示服务器是否存储有该终端对应的会话数据。在这种情况下,服务器单独开辟的存储系统(即上述数据库)仍然存在崩溃、宕机、服务不可用的可能性,在该存储系统(即上述数据库)崩溃、宕机或服务不可用的情况下,服务器无法得知当前终端是否具有对应的会话数据,进而导致基于会话数据的鉴权操作不可用。

此外,由于令牌本身也会通过上述第一鉴权操作进行验证,因此有效防止令牌信息被网络攻击者篡改,或者即使令牌信息被网络攻击者篡改,服务器也能检测到该篡改行为。可见,采用本发明提供的登录鉴权方法,可以尽可能地兼顾鉴权安全性和鉴权可用性。

为便于理解,假设网络攻击者在截获到终端发送给服务器的令牌后,篡改了令牌信息(例如篡改了令牌中预设字段的字段内容,或者删除了令牌中的预设标识),然后将篡改后的令牌发送给服务器。服务器在接收到令牌后,对该令牌执行算法校验。即服务器利用其掌握的私钥或加密算法对令牌中的令牌信息(字符串)进行加密,然后将加密结果与令牌中原有的加密字符串进行比较。由于令牌信息已经被篡改,因此加密结果与令牌中原有的加密字符串不一致。如此,算法校验未通过(也即第一校验结果表征鉴权未通过),服务器确定令牌的令牌信息被篡改,从而确定鉴权未通过,并结束整个鉴权流程。

本发明中,服务器在第一鉴权操作通过的情况下,通过执行上述步骤s12,以判断服务器中是否预先存储有终端对应的会话数据,从而判断是否执行第二鉴权操作(即下述步骤s13)。如此,一方面,服务器可以在其存储有终端对应的会话数据的情况下,执行第二鉴权操作(如下述步骤s13),获得第二鉴权结果。由于第二鉴权操作是基于会话数据而执行的鉴权操作,该种鉴权操作具有更高的安全性,因此可以提高整个鉴权流程的安全性。

另一方面,服务器可以在其未存储有终端对应的会话数据的情况下,不执行第二鉴权操作,而根据第一鉴权结果判断终端是否具有权限,从而确保鉴权可用性。

考虑到本发明中,服务器是在第一鉴权结果表征鉴权通过的情况下,才执行上述步骤s12,以判断服务器是否存储有终端对应的会话数据。因此在确定服务器未存储有终端对应的会话数据而不能执行第二鉴权操作时,也即在令牌中不包含所述预设标识的情况下,由于第一鉴权操作已经通过,因此服务器为了确保鉴权可用性,可以直接确定终端具有权限,并结束整个鉴权流程。

步骤s13:在所述服务器存储有所述终端对应的会话数据的情况下,基于所述终端对应的会话数据对所述终端执行第二鉴权操作,获得第二鉴权结果。

本发明中,第二鉴权操作所获得的第二鉴权结果可以表征鉴权通过,也可以表征鉴权未通过。本发明具体实现时,还可以根据所述第二鉴权结果,判断所述终端是否具有权限;其中,如果所述第二鉴权结果表征鉴权通过,则确定所述终端具有权限;如果所述第二鉴权结果表征鉴权未通过,则确定所述终端不具有权限。

在本发明的一些实施例中,服务器在基于终端对应的会话数据对终端执行第二鉴权操作时,具体地,可以访问存储区域以读取所述终端对应的会话数据,其中,所述存储区域存储有多个终端各自对应的会话数据;在成功读取到所述终端对应的会话数据的情况下,获得表征鉴权通过的第二鉴权结果。换言之,在成功读取到所述终端对应的会话数据的情况下,确定第二鉴权操作通过。

具体实现时,服务器的session数据库中存储有多份会话数据,多份会话数据分别对应不同的终端,每份会话数据均具有session_id(即会话数据标识),不同会话数据各自的session_id互不相同。服务器在接收到终端发送的令牌时,还会接收到终端发送的session_id(服务器在为终端生成会话数据后,将会话数据的session_id发送给终端,终端将session_id保存在cookie数据中,终端在向服务器发送请求时,携带cookie数据,从而将session_id发送给服务器)。服务器将终端发送的session_id作为索引,访问session数据库,以查询具有该session_id的会话数据,如果成功查询到具有该session_id的会话数据,则确定第二鉴权操作通过。换言之,如果成功查询到具有该session_id的会话数据,则获得第二鉴权结果,该第二鉴权结果表征鉴权通过。

通过执行上述包括步骤s11至步骤s13的鉴权方法,服务器在接收终端发送的令牌后,基于该令牌对终端执行第一鉴权操作。其中,由于令牌技术的可用性较高,因此本发明确保了鉴权可用性。

此外,在第一鉴权结果表征鉴权通过的情况下,也即在第一鉴权操作通过的情况下,根据令牌,判断服务器是否存储有终端对应的会话数据。并在确定服务器存储有终端对应的会话数据的情况下,也即第二鉴权操作可用的情况下,基于终端对应的会话数据对终端执行第二鉴权操作,获得第二鉴权结果。从而在第二鉴权操作可用的情况下,进一步提高了鉴权安全性。

在本发明的一些实施例中,考虑到服务器在执行上述步骤s13时,虽然服务器存储有终端对应的会话数据,但是服务器不一定能成功访问用于存储会话数据的存储区域。例如服务器的session数据库发生故障而导致不能查询会话数据,或者服务器内的网络中断而导致不能查询会话数据。

为了进一步提升鉴权可用性,在本发明的这些实施例中,服务器在确定其存储有终端对应的会话数据,但访问存储区域失败的情况下,服务器确定终端具有权限,从而避免因session数据库故障或服务器内部网络故障导致鉴权不可用。

上述各实施方式中,如果服务器通过执行上述步骤s12,确定其存储有终端对应的会话数据,则执行上述步骤s13,从而进一步获取第二鉴权结果。在本发明的上述这些实施方式中,如果服务器通过执行上述步骤s12,确定其未存储终端对应的会话数据,则说明服务器针对该终端的第二鉴权操作不可用,为了确保整个鉴权操作的可用性,服务器可以直接根据第一鉴权操作的第一鉴权结果,确定终端是否具有权限。简言之,在第一鉴权结果表征鉴权通过,但服务器未存储有终端对应的会话数据的情况下,确定终端具有权限。

参考图2,图2是本发明另一实施例提出的登录鉴权方法的流程图,该鉴权方法应用于服务器。如图2所示,该鉴权方法的流程包括:

s21:服务器接收终端发送的令牌,并基于该令牌对该终端执行第一鉴权操作,获得第一鉴权结果。

s22:如果该第一鉴权结果表征鉴权未通过,也即第一鉴权操作未通过,则确定该终端不具有权限,并结束整个鉴权流程。

s23:如果该第一鉴权结果表征鉴权通过,也即第一鉴权操作通过,则根据该令牌,判断该服务器是否存储有该终端对应的会话数据。

s24:如果服务器未存储该终端对应的会话数据,则确定该终端具有权限,并结束整个鉴权流程。

s25:如果服务器存储有该终端对应的会话数据,则访问存储有会话数据的存储区域以查询该终端对应的会话数据。

s26:如果成功查询到该终端对应的会话数据,则获得表征鉴权通过的第二鉴权结果,也即第二鉴权操作通过。如此,确定该终端具有权限,并结束整个鉴权流程。

s27:如果访问所述存储区域失败,则确定该终端具有权限,并结束整个鉴权流程。

图2所示的各个流程步骤的具体实现,可参考上述针对步骤s11至步骤s13的具体解释,为避免重复,本发明在此不做赘述。

参考图3,图3是本发明又一实施例提出的登录鉴权方法的交互示意图。如图3所示,终端可以预先向服务器发送登录请求。示例地,该登录请求中携带用户名和登录密码。服务器在对该终端进行登录验证,并在登录验证通过之后,为终端生成令牌。如图3所示,服务器还为该终端创建会话数据并存储所述会话数据,并在成功存储所述会话数据的情况下,按照第一预设处理方式,对该令牌进行处理,并将处理后的令牌发送给终端。此外,服务器还可以将会话数据的session_id(即会话数据标识)发送给终端。

其中,按照所述第一预设处理方式处理后的令牌表征:所述服务器存储有所述终端对应的会话数据。需要说明的是,如果服务器未成功存储会话数据,则服务器按照第二预设处理方式,对令牌进行处理,并将处理后的令牌发送给终端。其中,按照所述第二预设处理方式处理后的令牌表征:所述服务器未存储有所述终端对应的会话数据。为简化附图,图3中没有示出服务器未成功存储会话数据的情况。

具体实现时,服务器为终端生成的令牌中包含预设字段,与此同时,服务器尝试为该终端创建会话数据,并存储。为便于理解,假设第一预设处理方式为:服务器在令牌的预设字段中填充字符“1”,第二预设处理方式为:服务器在令牌的预设字段中填充字符“0”。如果服务器成功为该终端创建会话数据,并成功存储该会话数据,则服务器按照第一预设处理方式,将令牌中的预设字段填充为字符“1”。然后服务器将会话数据的session_id和填充字符后的令牌返回给终端,终端在接收到服务器返回的session_id和令牌后,存储该令牌,并将session_id存储在cookie数据中。

此外,如果服务器未成功存储终端对应的会话数据,则服务器按照第二预设处理方式,将令牌中的预设字段填充为字符“0”。然后服务器将会话数据的session_id和填充字符后的令牌返回给终端,终端在接收到服务器返回的session_id和令牌后,存储该令牌,并将session_id存储在cookie数据中。

如图3所示,终端在后续向服务器发送请求时,例如个人信息查看请求、资源获取请求、系统访问请求等,该请求携带该终端存储的令牌。此外,该请求还可以携带该终端的cookie数据,该cookie数据中包含该终端对应的会话数据的session_id。服务器在接收到终端发送的令牌后,基于该令牌对终端执行第一鉴权操作,并获得第一鉴权结果。在第一鉴权结果表征鉴权未通过的情况下,也即在第一鉴权操作未通过的情况下,服务器可以确定终端不具有权限,并终止整个鉴权操作。为了简化附图,图3中未示出第一鉴权结果表征鉴权未通过的情况。

如图3所示,在第一鉴权结果表征鉴权通过的情况下,也即在第一鉴权操作通过的情况下,服务器根据令牌,判断其是否存储有所述终端对应的会话数据。如果服务器未存储终端对应的会话数据,则服务器可以不执行第二鉴权操作,而直接确定终端具有权限,并终止整个鉴权操作。为了简化附图,图3中未示出第一鉴权结果表征鉴权未通过的情况。

如图3所示,如果服务器存储有终端对应的会话数据,则服务器以接收到的session_id为索引,尝试访问session数据库,以查询该session_id对应的会话数据(即终端对应的会话数据)。如果服务器成功查询到该session_id对应的会话数据,则确定终端具有权限。

如果服务器未能成功访问session数据库,在此情况下,服务器可以不执行第二鉴权操作,而直接确定终端具有权限,并终止整个鉴权操作。为了简化附图,图3中未示出第一鉴权结果表征鉴权未通过的情况。

图3所示的实施方式中,服务器在响应用户的登录请求时,如果登录验证通过,则服务器首先为终端生成令牌以及创建、存储会话数据,并且根据会话数据的存储成功与否,选择第一预设处理方式或第二预设处理方式对已经生成的令牌进行处理。简言之,图3所示的实施方式中,按照以下顺序响应用户的登录请求:生成令牌、创建会话数据、处理令牌。

在另一些方式中,服务器在响应用户的登录请求时,如果登录验证通过,则服务器也可以首先为所述终端创建会话数据,并存储所述会话数据;在成功存储所述会话数据的情况下,按照第一预设生成方式,为所述终端生成令牌,并将生成的令牌发送给所述终端,其中,按照所述第一预设生成方式所生成的令牌表征:所述服务器存储有所述终端对应的会话数据;在未成功存储所述会话数据的情况下,按照第二预设生成方式,为所述终端生成令牌,并将生成的令牌发送给所述终端,其中,按照所述第二预设生成方式所生成的令牌表征:所述服务器未存储有所述终端对应的会话数据。

上述这些实施例中,服务器首先尝试为终端创建会话数据和存储会话数据,并在成功创建和成功存储会话数据的情况下,再按照第一预设生成方式为终端生成令牌。在未成功存储会话数据的情况下,再按照第二预设生成方式为终端生成令牌。简言之,上述这些实施例中,按照以下顺序响应用户的登录请求:创建会话数据、生成令牌。

此外,考虑到某些情况下,一个账号可能在短时间内先后被多个设备登录,例如某一会员用户将其账号先后借给多人使用。如此,多个用户各自的终端先后登录该会员用户的账号,服务器先后为多个终端生成令牌和会话数据。然而又考虑到一个账号被多人分享容易造成用户数据泄露,对数据安全造成威胁,为了有效限制账号的分享数量,在本发明的一些实施例中,服务器可以针对每个账号,为该账号设置会话数据的上限数量,并在该账号的会话数据的数量超过所述上限数量的情况下,为该账号保留所述上限数量个会话数据,作为有效会话数据,并将该账号的其余会话数据作为失效会话数据。并且,服务器在执行第二鉴权操作时,如果是基于失效会话数据执行第二鉴权操作,则获得的第二鉴权结果表征鉴权未通过。具体实现时,如果服务器从session数据库中查询到的会话数据为失效会话数据,则获得的第二鉴权结果表征鉴权未通过,也即第二鉴权操作未通过。

以账号a为例,假设会话数据的上限数量为3,服务器在接收到某一终端发送的账号a的用户名和账号a的登录密码后,如果登录验证通过,则服务器为该终端生成令牌token1,并为该终端创建和存储会话数据session1,还为该令牌token1配置预设标识,服务器将会话数据session1的session_id和配置了预设标识的令牌token1发送给终端。此外,服务器还可以查询在创建上述会话数据session1之前,账号a已有的有效会话数据的数量,如果该数量达到3个,则服务器将上述创建的会话数据session1设置为失效会话数据。

如此,当该终端后续向服务器发送请求并携带该令牌token1和session_id时,服务器基于该令牌token1执行完第一鉴权操作后,如果第一鉴权操作通过,服务器再根据接收的session_id查询终端对应的会话数据session1。由于查询到的会话数据session1为失效会话数据,因此第二鉴权操作未通过,如此服务器确定该终端不具有权限,进而有效限制了账号a的分享数量。

另外,由于服务器内存储的会话数据通常存在有效期,例如几小时、几天或者几星期,原本有效的会话数据在有效期达到后自动过期失效。当原本有效的会话数据失效后,下一个生成的会话数据可以被确定为有效会话数据。因此针对一个账号对应的3个有效会话数据并不是固定不变的。

此外,服务器在存储每个会话数据时,可以记录该会话数据的存储时间和该会话数据对应的账号,当某一用户修改其账号的密码后,服务器可以将该账号在密码修改前的所有会话数据视为失效数据。并且,服务器在执行第二鉴权操作时,如果是基于失效会话数据执行第二鉴权操作,则获得的第二鉴权结果表征鉴权未通过。具体实现时,如果服务器从session数据库中查询到的会话数据为失效会话数据,则获得的第二鉴权结果表征鉴权未通过,也即第二鉴权操作未通过。

基于同一发明构思,参考图1,本发明一实施例还提供另一种登录鉴权方法。参考图4,图4是本发明另一实施例提出的登录鉴权方法的流程图,该登录鉴权方法应用于服务器。如图4所示,该方法包括以下步骤:

步骤s41:接收终端发送的令牌,并基于所述令牌对所述终端执行第一鉴权操作,获得第一鉴权结果;

步骤s42:根据所述令牌,判断所述服务器是否存储有所述终端对应的会话数据;

步骤s43:在所述服务器存储有所述终端对应的会话数据的情况下,基于所述终端对应的会话数据对所述终端执行第二鉴权操作,获得第二鉴权结果;

步骤s44:根据所述第一鉴权结果和所述第二鉴权结果,判断所述终端是否具有权限。

其中,针对步骤s41的具体实施方式,可参考上述针对步骤s11的具体实施方式。针对步骤s42的具体实施方式,可参考上述针对步骤s12的具体实施方式。针对步骤s43的具体实施方式,可参考上述针对步骤s13的具体实施方式。

在执行上述步骤s44时,具体地,如果第一鉴权结果和所述第二鉴权结果均表征鉴权通过,则确定终端具有权限。否则,确定终端不具有权限。

利用图4所示的登录鉴权方法进行鉴权时,服务器在接收终端发送的令牌后,基于该令牌对终端执行第一鉴权操作。其中,由于令牌技术的可用性较高,因此本发明确保了鉴权可用性。此外,服务器还根据令牌,判断服务器是否存储有终端对应的会话数据。并在确定服务器存储有终端对应的会话数据的情况下,也即第二鉴权操作可用的情况下,基于终端对应的会话数据对终端执行第二鉴权操作,获得第二鉴权结果。从而在第二鉴权操作可用的情况下,进一步提高了鉴权安全性。

基于同一发明构思,本发明一实施例提供一种登录鉴权装置。参考图5(a),图5(a)是本发明一实施例提出的登录鉴权装置的示意图,该登录鉴权装置设置于服务器。如图5(a)所示,该装置包括:

第一鉴权模块51,用于接收终端发送的令牌,并基于所述令牌对所述终端执行第一鉴权操作,获得第一鉴权结果;

判断模块52,用于在所述第一鉴权结果表征鉴权通过的情况下,根据所述令牌,判断所述服务器是否存储有所述终端对应的会话数据;

第二鉴权模块53,用于在所述服务器存储有所述终端对应的会话数据的情况下,基于所述终端对应的会话数据对所述终端执行第二鉴权操作,获得第二鉴权结果。

可选地,所述判断模块52,具体用于判断所述令牌中的预设字段的字段内容是否为目标内容,如果所述字段内容是目标内容,则确定所述服务器存储有所述终端对应的会话数据;如果所述字段内容不是目标内容,则确定所述服务器未存储有所述终端对应的会话数据;

或者具体用于判断所述令牌中是否包含预设标识,如果所述令牌包含预设标识,则确定所述服务器存储有所述终端对应的会话数据;如果所述令牌不包含预设标识,则确定所述服务器未存储有所述终端对应的会话数据。

可选地,所述所述第二鉴权模块53,具体用于在所述服务器存储有所述终端对应的会话数据的情况下,访问存储区域以读取所述终端对应的会话数据,其中,所述存储区域存储有多个终端各自对应的会话数据;在成功读取到所述终端对应的会话数据的情况下,获得表征鉴权通过的第二鉴权结果。

可选地,所述第二鉴权模块53,还具体用于在访问所述存储区域失败的情况下,确定所述终端具有权限。

基于同一发明构思,参考图5(b),图5(b)是本发明另一实施例提出的登录鉴权装置的示意图,该登录鉴权装置设置于服务器。如图5(b)所示,该装置不仅包括:第一鉴权模块51、判断模块52及第二鉴权模块53,还包括:

权限确定模块54,用于根据所述第二鉴权结果,判断所述终端是否具有权限;其中,如果所述第二鉴权结果表征鉴权通过,则确定所述终端具有权限;如果所述第二鉴权结果表征鉴权未通过,则确定所述终端不具有权限。

可选地,所述权限确定模块54,还用于在所述第一鉴权结果表征鉴权通过,但所述服务器未存储有所述终端对应的会话数据的情况下,确定所述终端具有权限。

可选地,如图5(b)所示,该装置还包括:

令牌生成模块55,用于为所述终端生成令牌;

会话数据创建存储模块56,用于为所述终端创建会话数据,并存储所述会话数据;

令牌处理模块57,用于在成功存储所述会话数据的情况下,按照第一预设处理方式,对所述令牌进行处理,并将处理后的令牌发送给所述终端,其中,按照所述第一预设处理方式处理后的令牌表征:所述服务器存储有所述终端对应的会话数据;以及在未成功存储所述会话数据的情况下,按照第二预设处理方式,对所述令牌进行处理,并将处理后的令牌发送给所述终端,其中,按照所述第二预设处理方式处理后的令牌表征:所述服务器未存储有所述终端对应的会话数据。

基于同一发明构思,参考图5(c),图5(c)是本发明另一实施例提出的登录鉴权装置的示意图,该登录鉴权装置设置于服务器。如图5(c)所示,该装置不仅包括:第一鉴权模块51、判断模块52、第二鉴权模块53以及权限确定模块54,还包括:

会话数据创建存储模块55,用于为所述终端创建会话数据,并存储所述会话数据;

令牌生成模块56,用于在成功存储所述会话数据的情况下,按照第一预设生成方式,为所述终端生成令牌,并将生成的令牌发送给所述终端,其中,按照所述第一预设生成方式所生成的令牌表征:所述服务器存储有所述终端对应的会话数据;在未成功存储所述会话数据的情况下,按照第二预设生成方式,为所述终端生成令牌,并将生成的令牌发送给所述终端,其中,按照所述第二预设生成方式所生成的令牌表征:所述服务器未存储有所述终端对应的会话数据。

如图5(b)或5(c)所示,登录鉴权装置还可以包括:

会话数据处理模块58,用于针对每个账号,为该账号设置会话数据的上限数量,并在该账号的会话数据的数量超过所述上限数量的情况下,为该账号保留所述上限数量个会话数据,作为有效会话数据,并将该账号的其余会话数据作为失效会话数据;其中,所述服务器在基于失效会话数据执行第二鉴权操作时,获得的第二鉴权结果表征鉴权未通过。

基于同一发明构思,本发明一实施例提供一种登录鉴权装置。参考图6,图6是本发明另一实施例提出的登录鉴权装置的示意图,该登录鉴权装置设置于服务器。如图6所示,该装置包括:

第一鉴权模块61,用于接收终端发送的令牌,并基于所述令牌对所述终端执行第一鉴权操作,获得第一鉴权结果;

判断模块62,用于根据所述令牌,判断所述服务器是否存储有所述终端对应的会话数据;

第二鉴权模块63,用于在所述服务器存储有所述终端对应的会话数据的情况下,基于所述终端对应的会话数据对所述终端执行第二鉴权操作,获得第二鉴权结果;

权限确定模块64,用于根据所述第一鉴权结果和所述第二鉴权结果,判断所述终端是否具有权限。

本发明实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,

存储器703,用于存放计算机程序;

处理器701,用于执行存储器703上所存放的程序时,实现如下步骤:

接收终端发送的令牌,并基于所述令牌对所述终端执行第一鉴权操作,获得第一鉴权结果;

在所述第一鉴权结果表征鉴权通过的情况下,检测所述令牌中是否包含所述服务器预先配置的预设标识,其中,所述预设标识用于表征:所述服务器预先存储有所述终端对应的会话数据;

在所述令牌中包含所述预设标识的情况下,基于所述终端对应的会话数据对所述终端执行第二鉴权操作,获得第二鉴权结果,并根据所述第二鉴权结果,判断所述终端是否具有权限。

或者,实现如下步骤:

接收终端发送的令牌,并基于所述令牌对所述终端执行第一鉴权操作,获得第一鉴权结果;

根据所述令牌,判断所述服务器是否存储有所述终端对应的会话数据;

在所述服务器存储有所述终端对应的会话数据的情况下,基于所述终端对应的会话数据对所述终端执行第二鉴权操作,获得第二鉴权结果;

根据所述第一鉴权结果和所述第二鉴权结果,判断所述终端是否具有权限。

或者,处理器701在执行存储器703上所存放的程序时,还可以实现上述其他方法实施例中的步骤。

上述终端提到的通信总线可以是外设部件互连标准(peripheralcomponentinterconnect,简称pci)总线或扩展工业标准结构(extendedindustrystandardarchitecture,简称eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

通信接口用于上述终端与其他设备之间的通信。

存储器可以包括随机存取存储器(randomaccessmemory,简称ram),也可以包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。

上述的处理器可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(digitalsignalprocessing,简称dsp)、专用集成电路(applicationspecificintegratedcircuit,简称asic)、现场可编程门阵列(field-programmablegatearray,简称fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。

在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的鉴权方法。

在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的鉴权方法。

在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solidstatedisk(ssd))等。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。

以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

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