基于TOKEN令牌的身份校验方法及相关设备与流程

文档序号:19219609发布日期:2019-11-26 02:00阅读:354来源:国知局
基于TOKEN令牌的身份校验方法及相关设备与流程

本申请涉及信息安全领域,特别涉及一种基于token令牌的身份校验方法及相关设备。



背景技术:

目前,大多数远程访问系统都是前后端分离,前后端分离的项目有个最难解决的问题就是怎么去做调用鉴权,即怎么才能知道这一次请求是合法的。现在一般的做法就是用户在前端登录成功之后,后端会给前端分配一个token令牌,所述token令牌用于对请求者的身份进行校验,其中token令牌一般会规定多长时间过期,过期之后所述token就会失效,但是在所述token失效之前容易被攻击者截获,然后伪造成用户去后端请求,由此造成伪造请求攻击,导致系统潜在的风险。



技术实现要素:

本申请的目的在于针对现有技术的不足,提供一种基于token令牌的身份校验方法及相关设备,通过在客户端生成token令牌,发送给服务端,并在服务器端进行token的校验,可有效提高身份校验的安全性。

为达到上述目的,本申请的技术方案提供一种基于token令牌的身份校验方法及相关设备。

本申请公开了一种基于token令牌的身份校验方法,包括以下步骤:

在客户端对用户的登录状态进行检测,当检测到用户在客户端成功登录时,获取所述用户的身份信息;

当所述用户准备发起http任务请求时,在客户端生成一个随机数,并获取客户端的时戳,根据所述用户的身份信息、随机数以及时戳在客户端生成当前的token令牌,并根据所述当前的token令牌向服务端发送http任务请求;

当服务端收到所述http任务请求后,对所述http任务请求对应的用户身份进行校验,并根据校验结果向客户端发送反馈信息;

当客户端收到服务端的反馈信息后,根据所述反馈信息对本次http任务请求对应的数据进行更新。

较佳地,所述当所述用户准备发起http任务请求时,在客户端生成一个随机数,包括:

当所述用户准备发起http任务请求时,在客户端生成一个与所述用户的身份信息相同位数的随机数;

则所述根据所述用户的身份信息、随机数以及时戳在客户端生成当前的token令牌,包括:

将所述用户的身份信息、随机数以及时戳拼接以任意顺序生成第一字符串,并在所述第一字符串的头部添加时戳位置标识,生成第二字符串;

将所述第二字符串通过hash算法在客户端生成一个token令牌。

较佳地,所述当所述用户准备发起http任务请求时,在客户端生成一个随机数,包括:

当所述用户准备发起http任务请求时,在客户端生成一个任意位数的随机数;

则所述根据所述用户的身份信息、随机数以及时戳在客户端生成当前的token令牌,包括:

将所述用户的身份信息、随机数以及时戳拼接生成一个字符串,并将所述时戳放在所述字符串的头部或尾部;

将所述字符串通过hash算法在客户端生成一个token令牌。

较佳地,所述根据所述当前的token令牌向服务端发送http任务请求,包括:

将所述字符串进行加密;

将所述加密后的字符串放入所述http任务请求的包头中,并将所述token令牌放入所述http任务请求的包体中;

将所述http任务请求发送给服务端。

较佳地,所述对所述http任务请求对应的用户身份进行校验之前,包括:

预设有效时间段;

对所述http任务请求的包头进行解析,获得所述http任务请求中的字符串,对所述字符串进行解密,获得所述字符串中的时戳;

获取服务端当前的系统时间,并将所述当前的系统时间与所述时戳之间的时间差与所述有效时间段进行比较,如果所述当前的系统时间与所述时戳之间的时间差在所述有效时间段内,则对用户身份进行校验,否则向客户端发送超时拒绝反馈信息。

较佳地,所述对所述http任务请求对应的用户身份进行校验,并根据校验结果向客户端发送反馈信息,包括:

对所述http任务请求的包体进行解析,获得所述http任务请求中的token令牌;

根据所述解密后的字符串通过hash算法生成校验token令牌;

将所述校验token令牌与所述http任务请求中的token令牌进行比对,如果一致,则校验通过,并向客户端发送校验成功反馈信息及本次http任务请求对应的数据,否则向客户端发送校验失败拒绝反馈信息。

较佳地,所述当客户端收到服务端的反馈信息后,根据所述反馈信息对本次http任务请求对应的数据进行更新,包括:

当客户端收到超时拒绝的反馈信息时,在客户端生成新的随机数并获取新的时戳,根据所述新的随机数、新的时戳以及用户的身份信息生成新的token令牌,并根据所述新的token令牌向服务端再次发起http任务请求;

当客户端收到校验失败拒绝的反馈信息时,结束本次http任务请求;

当客户端收到校验成功的反馈信息时,结束本次http任务请求,并根据服务端发送的与所述http任务请求对应的的数据进行更新。

本申请还公开了一种基于token令牌的身份校验装置,所述装置包括:

信息获取模块:设置为在客户端对用户的登录状态进行检测,当检测到用户在客户端成功登录时,获取所述用户的身份信息;

请求发送模块:设置为当所述用户准备发起http任务请求时,在客户端生成一个随机数,并获取客户端的时戳,根据所述用户的身份信息、随机数以及时戳在客户端生成当前的token令牌,并根据所述当前的token令牌向服务端发送http任务请求;

校验模块:设置为当服务端收到所述http任务请求后,对所述http任务请求对应的用户身份进行校验,并根据校验结果向客户端发送反馈信息;

更新模块:设置为当客户端收到服务端的反馈信息后,根据所述反馈信息对本次http任务请求对应的数据进行更新。

本申请还公开了一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被一个或多个所述处理器执行时,使得一个或多个所述处理器执行上述所述身份校验方法的步骤。

本申请还公开了一种存储介质,所述存储介质可被处理器读写,所述存储介质存储有计算机指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述所述身份校验方法的步骤。

本申请的有益效果是:本申请通过在客户端生成由用户身份信息、时戳及随机数组成的token令牌,在服务端对此令牌进行校验,由于所述令牌中的随机数是随机产生且经过加密,并将所述随机数与用户信息和时戳一起经过hash算法生成令牌,保证了任务请求的安全性,避免了由服务端分配token导致被篡改的危险。

附图说明

图1为本申请第一个实施例的一种基于token令牌的身份校验方法的流程示意图;

图2为本申请第二个实施例的一种基于token令牌的身份校验方法的流程示意图;

图3为本申请第三个实施例的一种基于token令牌的身份校验方法的流程示意图;

图4为本申请第四个实施例的一种基于token令牌的身份校验方法的流程示意图;

图5为本申请第五个实施例的一种基于token令牌的身份校验方法的流程示意图;

图6为本申请第六个实施例的一种基于token令牌的身份校验方法的流程示意图;

图7为本申请第七个实施例的一种基于token令牌的身份校验方法的流程示意图;

图8为本申请实施例的一种基于token令牌的身份校验装置结构示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。

本申请第一个实施例的一种基于token令牌的身份校验方法流程如图1所示,本实施例包括以下步骤:

步骤s101,在客户端对用户的登录状态进行检测,当检测到用户在客户端成功登录时,获取所述用户的身份信息;

具体的,当用户在客户端本地登录时,通常会输入所述用户的信息,所述用户的信息包括用户的账户名和密码,当客户端对所述用户的账户名和密码验证通过后,用户就可以在客户端成功登录,客户端也可以获取到当前登录用户的身份信息,所述用户的身份信息即为用户的账号。

步骤s102,当所述用户准备发起http任务请求时,在客户端生成一个随机数,并获取客户端的时戳,根据所述用户的身份信息、随机数以及时戳在客户端生成当前的token令牌,并根据所述当前的token令牌向服务端发送http任务请求;

具体的,当用户准备向服务端发起http任务请求时,会在客户端生成相应的http任务请求数据包,所述http任务请求数据包中包含所述用户的身份信息以及任务信息,然后将所述http任务请求数据包发送给服务端,以便在所述服务端收到所述http任务请求数据包后,对所述http任务请求数据包进行解析,获取所述http任务请求数据包中的用户身份信息及任务信息,并根据所述用户身份信息进行校验,并在校验通过后根据所述任务信息执行相应的任务。

具体的,在生成所述用户身份信息时,可在所述客户端生成一个固定位数的或者任意位数的随机数,并获取客户端的当前时戳,然后根据所述随机数、时戳以及用户的身份信息生成一个token令牌,并在所述token令牌放入所述htttp任务请求数据包中。

步骤s103,当服务端收到所述http任务请求后,对所述http任务请求对应的用户身份进行校验,并根据校验结果向客户端发送反馈信息;

具体的,当服务端收到客户端的http任务请求后,可对所述http任务请求进行解析,获取所述http任务请求中的用户身份信息,并对所述用户身份信息进行校验,如果校验通过,则根据所述http任务请求中的任务向客户端发送相应数据,否则可向客户端发送拒绝请求消息。

步骤s104,当客户端收到服务端的反馈信息后,根据所述反馈信息对本次http任务请求对应的数据进行更新。

具体的,当客户端收到服务端的反馈信息后,可根据所述反馈信息进行客户端数据的更新;所述反馈信息包括成功的反馈消息及失败的反馈消息,如果客户端收到反馈信息,标识由于超时导致服务器的拒绝,客户端可以重新生成一个token,所述token包含当前的时戳、用户信息及随机数;如果由于token校验不通过导致服务端的拒绝,客户端可结束本次http任务请求;如果收到成功消息,客户端可结束本次http任务请求,并根据服务端的反馈数据进行客户端数据的更新。

本实施例中,通过在客户端生成由用户身份信息、时戳及随机数组成的token令牌,在服务端对此令牌进行校验,由于所述令牌中的随机数是随机产生且经过加密,并将所述随机数与用户信息和时戳一起经过hash算法生成令牌,保证了任务请求的安全性,避免了由服务端分配token导致被篡改的危险。

图2为本申请第二个实施例的一种基于token令牌的身份校验方法流程示意图,如图所示,所述步骤s102,当所述用户准备发起http任务请求时,在客户端生成一个随机数,包括:

当所述用户准备发起http任务请求时,在客户端生成一个与所述用户的身份信息相同位数的随机数;

具体的,当所述用户准备发起http任务请求时,可在客户端生成一个与所述用户的身份信息相同位数的随机数,由于所述用户的身份信息是固定长度的,因此所述随机数也是固定长度,且所述随机数的位数和用户的身份信息位数一致。

则所述根据所述用户的身份信息、随机数以及时戳在客户端生成当前的token令牌,包括:

步骤s201,将所述用户的身份信息、随机数以及时戳拼接以任意顺序生成第一字符串,并在所述第一字符串的头部添加时戳位置标识,生成第二字符串;

具体的,可将所述用户的身份信息、随机数以及时戳拼接以任意顺序生成第一字符串,假设用户的身份信息为a,随机数为b,时戳为c,那么顺序可以为abc,cba,acb,cab,bca,bac中的任一个,当所述第一字符串生成之后,在所述第一字符串的头部添加时戳位置标识,用于标识所述时戳在所述第一字符串中的位置,所述时戳位置标识可以通过2位数字标识,例如00标识所述时戳在所述第一字符串的头部,01标识所述时戳在所述第一字符串的中间,10标识所述时戳在所述第一字符串的尾部,然后生成第二字符串,这样当服务端收到所述第二字符串后,读取头部2位数字,就能获得时戳的位置,进行解析后就能获取时戳的具体内容。

步骤s202,将所述第二字符串通过hash算法在客户端生成一个token令牌。

当所述第二字符串生成之后,可将所述第二字符串通过hash算法在客户端生成一个token令牌,所述hash算法是一个hash函数,就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值,同样的在服务端可通过hash算法对token令牌进行解析获得字符串。

本实施例中,通过将用户的身份信息、时戳及随机数以任意顺序拼接,可以提高灵活性,提高数据处理效率。

图3为本申请第三个实施例的一种基于token令牌的身份校验方法流程示意图,如图所示,所述步骤s102,当所述用户准备发起http任务请求时,在客户端生成一个随机数,包括:

当所述用户准备发起http任务请求时,在客户端生成一个任意位数的随机数;

具体的,所述的任意位数包括任意位数的正整数。

则所述根据所述用户的身份信息、随机数以及时戳在客户端生成当前的token令牌,包括:

步骤s301,将所述用户的身份信息、随机数以及时戳拼接生成一个字符串,并将所述时戳放在所述字符串的头部或尾部;

具体的,可先将所述用户的身份信息、随机数以及时戳拼接生成一个字符串,在拼接过程中,可将所述时间戳放在字符串的头部或尾部,并与服务端约定所述时间戳的位数与位置,例如时间戳可以是14位,分别是年月日时分秒,如20190424000000,然后可任意的将随机数及用户信息按不同顺序进行拼接,生成一串字符串x,这样服务端在收到字符串x后可通过所述字符串x读取对应的时间戳,假设用户的身份信息为a,随机数为b,时戳为c,那么顺序可以为abc,cba,acb,bca中的任一个,且时戳的位置与位数在客户端和服务端之间是事先约定好的,一旦约定好之后,在通信过程中不再更改。

步骤s302,将所述字符串通过hash算法在客户端生成一个token令牌。

具体的,当所述字符串生成之后,可将所述字符串通过hash算法在客户端生成一个token令牌,所述hash算法是一个hash函数,就是把任意长度的输入通过散列算法变换成固定长度的输出,该输出就是散列值,同样的在服务端可通过hash算法对token令牌进行解析获得字符串。

本实施例中,通过预先在客户端与服务端之间预先约定时戳的位置及位数,由此可生成任意位数的随机数,而随机数是token的组成部分之一,因此可提高token校验的安全性。

图4为本申请第四个实施例的一种基于token令牌的身份校验方法流程示意图,如图所示,所述步骤s102,根据所述当前的token令牌向服务端发送http任务请求,包括:

步骤s401,将所述字符串进行加密;

具体的,当所述字符串生成后,可对所述字符串进行备份,一个用于根据hash算法生成token令牌,另一个可用于进行加密,所述加密可以是通过对称加密算法进行加密,加密的秘钥可以在客户端和服务器端事先约定,所述秘钥可以定期的在客户端和服务端之间更新,例如,预先设定更新时间段,如一周,一个月等,当到期之后,由客户端或者服务端发起秘钥更新请求,并根据所述秘钥更新请求更新双方的秘钥,在所述秘钥更新之前,秘钥不会改变;也可以是通过非对称加密算法进行加密,客户端和服务器端各维护一对公钥和私钥,即在客户端维护一个公钥和一个私钥,在服务端维护一个公钥和一个私钥,所述公钥用于对字符串进行加密,所述私钥用于对字符串进行解密,即如果在客户端用公钥对所述字符串进行加密,则在服务端用私钥对所述字符串进行解密。

步骤s402,将所述加密后的字符串放入所述http任务请求的包头中,并将所述token令牌放入所述http任务请求的包体中;

具体的,所述http任务请求是通过http任务请求数据包的形式进行发送,所述http任务请求数据包包含包头和包体,当所述加密的字符串生成后,可将所述加密的字符串放入所述http任务请求数据包的包头中,当所述token令牌生成后,可将所述token令牌放入所述http任务请求数据包的包体中。

步骤s403,将所述http任务请求发送给服务端。

具体的,当所述加密的字符串和所述token令牌都放入所述http任务请求数据包后,就可将所述http任务请求数据包发送给服务端了。

本实施例中,通过对所述字符串进行加密并和所述token一起发送,可以提高检验的安全性。

图5为本申请第五个实施例的一种基于token令牌的身份校验方法流程示意图,如图所示,所述步骤s103,对所述http任务请求对应的用户身份进行校验之前,包括:

步骤s501,预设有效时间段;

具体的,可在服务端预设有效时间段,保证token的有效性,避免客户端在发起http任务请求后,长时间没有到达服务端,而引起的安全风险,所述有效时间段可以是一段时间,例如5秒钟或者10秒钟,。

步骤s502,对所述http任务请求的包头进行解析,获得所述http任务请求中的字符串,对所述字符串进行解密,获得所述字符串中的时戳;

具体的,当获取到客户端的http任务请求数据包后,可对所述http任务请求数据包中的包头进行解析,获得所述http任务请求中的字符串,然后对所述字符串进行解密,所述服务端解密的方式需与客户端加密的方式一致,即如果客户端是对称加密,那么服务端应对称解密,然后获得所述字符串中的时戳,由于时戳是放在所述字符串的首部,且位数是预先在客户端和服务端之间约定好的,因此只要按照约定读取所述字符串的初始位数就可获取时戳。

步骤s503,获取服务端当前的系统时间,并将所述当前的系统时间与所述时戳之间的时间差与所述有效时间段进行比较,如果所述当前的系统时间与所述时戳之间的时间差在所述有效时间段内,则对用户身份进行校验,否则向客户端发送超时拒绝反馈信息。

具体的,当获取到客户端时戳之后,可获取服务端当前的系统时间,然后根据所述客户端时戳和所述服务端当前的系统时间获得时间差,并将所述时间差与所述预设的有效时间段进行比较,如果所述当前的系统时间与所述时戳之间的时间差在所述有效时间段内,则对用户身份进行校验,否则向客户端发送超时拒绝反馈信息,例如,如果预设有效时间段是30秒,收到的时戳是11点25分11秒,服务端系统当前时间是11点26分11秒,时间差是60秒,所述时间差远大于所述预设有效时间段,因此服务端可拒绝本次任务请求。

本实施例中,通过在服务端对http任务请求中的时戳进行解析获得所述http任务请求的有效期限,并根据所述有效期限确定本次请求的有效性,可以提高身份校验的安全性。

图6为本申请第六个实施例的一种基于token令牌的身份校验方法流程示意图,如图所示,所述步骤s103,对所述http任务请求对应的用户身份进行校验,并根据校验结果向客户端发送反馈信息,包括:

步骤s601,对所述http任务请求的包体进行解析,获得所述http任务请求中的token令牌;

具体的,当获取到客户端的http任务请求数据包后,可对所述http任务请求数据包中的包体进行解析,获得所述http任务请求中的token令牌。

步骤s602,根据所述解密后的字符串通过hash算法生成校验token令牌;

具体的,当解析获得解密后的字符串之后,可根据hash算法在服务端生成校验token令牌,所述校验token令牌用于与http任务请求中的token进行比较,完成身份验证,由于字符串x是经过加密的,因此可将在服务端生成的token令牌作为比对样本,而http任务请求中的token容易被人窃取,可用于身份验证,如果一致,则说明本次任务请求通过,这样可以无需让服务端生成token并发送给客户端,减轻服务端的负荷。

步骤s603,将所述校验token令牌与所述http任务请求中的token令牌进行比对,如果一致,则校验通过,并向客户端发送校验成功反馈信息及本次http任务请求对应的数据,否则向客户端发送校验失败拒绝反馈信息。

具体的,可将所述校验token令牌与所述http任务请求中的token令牌进行比对,如果一致,则校验通过,并向客户端发送校验成功反馈信息及本次http任务请求对应的数据,否则向客户端发送校验失败拒绝反馈信息。

本实施例中,通过在服务端对http任务请求中的token通过hash算法进行校验,可以有效提高校验的安全性。

图7为本申请第七个实施例的一种基于token令牌的身份校验方法流程示意图,如图所示,所述步骤s104,当客户端收到服务端的反馈信息后,根据所述反馈信息进行客户端数据的更新,包括:

步骤s701,当客户端收到超时拒绝的反馈信息时,在客户端生成新的随机数并获取新的时戳,根据所述新的随机数、新的时戳以及用户的身份信息生成新的token令牌,并根据所述新的token令牌向服务端再次发起http任务请求;

具体的,当客户端收到超时拒绝的反馈信息时,可在所述客户端生成新的随机数并获取新的时戳,所述新的随机数也可以是任意的,即新的随机数可以和旧的随机数不同位数,不同数字;然后根据所述新的随机数、新的时戳以及用户的身份信息生成新的token令牌,并根据所述新的token令牌向服务端再次发起http任务请求。

步骤s702,当客户端收到校验失败拒绝的反馈信息时,结束本次http任务请求;

具体的,当客户端收到校验失败拒绝的反馈信息时,可直接结束本次http任务请求,不再发起新的http任务请求。

步骤s703,当客户端收到校验成功的反馈信息时,结束本次http任务请求,并根据服务端发送的与所述http任务请求对应的的数据进行更新。

具体的,当客户端收到校验成功的反馈信息时,可结束本次http任务请求,并根据服务端发送的与所述http任务请求对应的的数据进行更新,例如,客户端向服务端发起一个读取用户历史订单的请求,服务端接收到所述请求,开始校验用户的身份,校验成功后将所述用户的历史订单数据查询出来返回给客户端,客户端收到所述历史订单数据后进行客户端数据的更新。

本实施例中,通过在客户端根据服务端的反馈信息进行进一步操作,在超时的时候可以重新发起请求,避免不必要的通信中断,在校验失败的时候结束请求,避免过多的请求增加系统负担,并在成功的时候更新本地数据,提高系统的运行效率。

本申请实施例的一种基于token令牌的身份校验装置结构如图8所示,包括:

信息获取模块801、请求发送模块802、校验模块803及更新模块804;其中,信息获取模块801与请求发送模块802相连,请求发送模块802与校验模块803相连,校验模块803与更新模块804相连;信息获取模块801设置为在客户端对用户的登录状态进行检测,当检测到用户在客户端成功登录时,获取所述用户的身份信息;请求发送模块802设置为当所述用户准备发起http任务请求时,在客户端生成一个随机数,并获取客户端的时戳,根据所述用户的身份信息、随机数以及时戳在客户端生成当前的token令牌,并根据所述当前的token令牌向服务端发送http任务请求;校验模块803设置为当服务端收到所述http任务请求后,对所述http任务请求对应的用户身份进行校验,并根据校验结果向客户端发送反馈信息;更新模块804设置为当客户端收到服务端的反馈信息后,根据所述反馈信息对本次http任务请求对应的数据进行更新。

本申请实施例还公开了一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器中存储有计算机可读指令,所述计算机可读指令被一个或多个所述处理器执行时,使得一个或多个所述处理器执行上述各实施例中所述身份校验方法中的步骤。

本申请实施例还公开了一种存储介质,所述存储介质可被处理器读写,所述存储器存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行上述各实施例中所述身份校验方法中的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)等非易失性存储介质,或随机存储记忆体(randomaccessmemory,ram)等。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

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