访问令牌的生成及校验方法、装置、电子设备和存储介质与流程

文档序号:28447014发布日期:2022-01-12 03:59阅读:62来源:国知局
访问令牌的生成及校验方法、装置、电子设备和存储介质与流程

1.本发明涉及通信安全技术领域,具体地说,涉及一种访问令牌的生成及校验方法、装置、电子设备和存储介质。


背景技术:

2.服务端对客户端发送的请求进行认证是互联网应用中保护数据安全的一种重要手段。目前主流的认证方式基于json web token(json网络令牌,jwt)实现。json(javascript object notation,js对象简谱)是一种轻量级的数据交换格式。
3.jwt令牌的生成过程为:客户端登录时,服务端获取用户信息,采用json格式存储,并基于base64编码算法处理json格式的用户信息生成base64字符串作为jwt令牌返回给客户端。之后,客户端每次发送请求都会携带jwt令牌,具体是将jwt令牌放在http请求头的authorization字段中,服务端通过校验jwt令牌的方式实现对用户请求的认证。
4.但是,jwt令牌至少存在三个问题:
5.第一,jwt令牌中的用户信息以json格式存储,每个键key和值value都需要双引号及冒号隔开,占用存储空间,造成大量的额外开销;
6.第二,jwt令牌中的用户信息未经过加密处理,导致用户信息容易泄露;
7.第三,jwt令牌基于ajax请求携带在http请求头中,而ajax请求的接收类型只限于string字符串,不是流类型,因此在文件下载时服务端无法通过jwt令牌获取当前用户信息。
8.需要说明的是,上述背景技术部分公开的信息仅用于加强对本发明的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。


技术实现要素:

9.有鉴于此,本发明提供一种访问令牌的生成及校验方法、装置、电子设备和存储介质,通过bencoding格式存储用户信息,能够极大地减小访问令牌占用的存储空间,降低资源消耗;并且适用于高并发场景,还能避免用户信息泄露,确保用户信息安全。
10.本发明的一个方面提供一种访问令牌的生成及校验方法,包括:响应于客户端的登录请求,根据所述登录请求获取用户信息;对所述用户信息进行b编码bencoding,生成以bencoding格式存储的目标数据;根据所述目标数据生成访问令牌,向所述客户端返回携带所述访问令牌的第一响应数据。
11.在一些实施例中,所述对所述用户信息进行b编码bencoding时,还包括:对令牌有效期进行b编码;获得包含以bencoding格式存储的用户信息数据和以bencoding格式存储的令牌有效期数据的所述目标数据。
12.在一些实施例中,所述令牌有效期包括日期数据类型的令牌签发时间和令牌失效时间;所述对令牌有效期进行b编码,包括:以[t日期数据]e的编码方式,分别在所述令牌签发时间和所述令牌失效时间的首部添加标识符t且尾部添加标识符e,生成以t[令牌签发时
间]e和t[令牌失效时间]e的bencoding格式存储的令牌有效期数据。
[0013]
在一些实施例中,所述用户信息包括多条字符串类型的信息内容;所述对所述用户信息进行b编码bencoding,包括:以[字符串长度:字符串]的编码方式,分别获取每条所述信息内容的以字节为单位的字符串长度,生成每条所述信息内容以[字节数:信息内容]的bencoding格式存储的用户信息数据。
[0014]
在一些实施例中,所述根据所述目标数据生成访问令牌,包括:对所述目标数据进行压缩,获得压缩后的目标数据;对所述压缩后的目标数据进行加密,获得加密后的目标数据;对所述加密后的目标数据进行编码,生成所述访问令牌。
[0015]
在一些实施例中,所述对所述目标数据进行压缩时,使用gzip压缩算法;和/或,所述对所述压缩后的目标数据进行加密时,使用sm4加密算法;和/或,所述对所述加密后的目标数据进行编码时,使用base64编码算法。
[0016]
在一些实施例中,所述向所述客户端返回携带所述访问令牌的第一响应数据,包括:将所述访问令牌放入所述第一响应数据的响应头的set-cookie字段中,以使所述客户端收到所述第一响应数据后自动将所述访问令牌保存至cookie中,且所述客户端之后发送的请求中自动携带所述访问令牌。
[0017]
在一些实施例中,所述对所述用户信息进行b编码bencoding时,还对令牌有效期进行b编码;所述访问令牌的生成及校验方法还包括:响应于携带所述访问令牌的访问请求,根据所述访问请求获取当前用户信息,并根据所述访问令牌获得所述用户信息和所述令牌有效期;依次校验所述令牌有效期是否有效及所述当前用户信息与所述用户信息相比是否更新;若所述令牌有效期失效,向所述客户端返回错误信息;若所述令牌有效期有效且所述当前用户信息未更新,向所述客户端返回所述访问请求对应的第二响应数据;若所述令牌有效期有效且所述当前用户信息已更新,基于所述当前用户信息生成更新令牌,并向所述客户端返回携带所述更新令牌的所述第二响应数据。
[0018]
在一些实施例中,所述基于所述当前用户信息生成更新令牌后,将所述访问令牌加入黑名单池;校验所述令牌有效期有效后,判断所述访问令牌是否在所述黑名单池中,若在则向所述客户端返回所述错误信息,若不在则校验所述当前用户信息是否更新。
[0019]
在一些实施例中,所述根据所述访问令牌获得所述用户信息和所述令牌有效期,包括:采用所述访问令牌的生成过程的逆过程处理所述访问令牌,获得所述目标数据;对所述目标数据进行b解码,获得所述用户信息和所述令牌有效期。
[0020]
本发明的另一个方面提供一种访问令牌的生成及校验装置,包括:请求响应模块,配置为响应于客户端的登录请求,根据所述登录请求获取用户信息;bencoding模块,配置为对所述用户信息进行b编码bencoding,生成以bencoding格式存储的目标数据;令牌生成模块,配置为根据所述目标数据生成访问令牌,向所述客户端返回携带所述访问令牌的第一响应数据。
[0021]
本发明的又一个方面提供一种电子设备,包括:一处理器;一存储器,所述存储器中存储有可执行指令;其中,所述可执行指令被所述处理器执行时,实现如上述任意实施例所述的访问令牌的生成及校验方法。
[0022]
本发明的再一个方面提供一种计算机可读的存储介质,用于存储程序,所述程序被处理器执行时实现如上述任意实施例所述的访问令牌的生成及校验方法。
[0023]
本发明与现有技术相比的有益效果至少包括:
[0024]
通过bencoding格式存储用户信息,能够极大地减小访问令牌占用的存储空间,降低资源消耗;通过改进b编码方式,增加日期数据的编码存储,能够根据访问令牌快速地同步获取到用户信息和令牌有效期,无需对时间数据进行二次处理,尤其适用于高并发场景,提高响应效率,提升系统性能;通过对目标数据进行压缩,能够进一步减少访问令牌的占用空间,且通过对目标数据进行加密,能够确保用户信息的安全,防止用户信息泄露;另外,通过将访问令牌存储在客户端的cookie中,实现不管客户端发送的请求是否是ajax或axios请求,服务端都能通过获取cookie中的访问令牌进行解析获取到用户信息。
[0025]
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
[0026]
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。显而易见地,下面描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0027]
图1示出本发明一实施例中访问令牌的生成及校验方法的步骤示意图;
[0028]
图2示出本发明一实施例中访问令牌的生成过程的场景示意图;
[0029]
图3示出本发明又一实施例中访问令牌的生成及校验方法的步骤示意图;
[0030]
图4示出本发明一实施例中访问令牌的校验过程的场景示意图;
[0031]
图5示出本发明一实施例中访问令牌的生成及校验装置的模块示意图;
[0032]
图6示出本发明一实施例中电子设备的结构示意图。
具体实施方式
[0033]
现在将参考附图更全面地描述示例实施方式。然而,示例实施方式能够以多种形式实施,且不应被理解为限于在此阐述的实施方式。相反,提供这些实施方式使本发明全面和完整,并将示例实施方式的构思全面地传达给本领域的技术人员。
[0034]
附图仅为本发明的示意性图解,并非一定是按比例绘制。图中相同的附图标记表示相同或类似的部分,因而将省略对它们的重复描述。附图中所示的一些方框图是功能实体,不一定必须与物理或逻辑上独立的实体相对应。可以采用软件形式来实现这些功能实体,或在一个或多个硬件模块或集成电路中实现这些功能实体,或在不同网络和/或处理器装置和/或微控制器装置中实现这些功能实体。
[0035]
此外,附图中所示的流程仅是示例性说明,不是必须包括所有的步骤。例如,有的步骤可以分解,有的步骤可以合并或部分合并,且实际执行的顺序有可能根据实际情况改变。具体描述时使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。需要说明的是,在不冲突的情况下,本发明的实施例及不同实施例中的特征可以相互组合。
[0036]
图1示出一实施例中访问令牌的生成及校验方法的主要步骤,参照图1所示,本实施例中访问令牌的生成及校验方法包括:步骤s110,响应于客户端的登录请求,根据登录请
求获取用户信息;步骤s120,至少对用户信息进行b编码bencoding,生成以bencoding格式存储的目标数据;步骤s130,根据目标数据生成访问令牌,向客户端返回携带访问令牌的第一响应数据。
[0037]
在具体场景中,客户端根据用户名和密码进行登录,发出登录请求;服务端收到登录请求后,从数据库中查询登录请求对应的用户信息。
[0038]
在传统的jwt令牌技术中,以json格式存储用户信息。举例来说,字符串和整数用json格式存储如下:
[0039]
{
[0040]“name”:“test”,
[0041]“project”:“hello world”,
[0042]“length”:1234,
[0043]“score”:-1234
[0044]
}
[0045]
在上述的json格式存储中,大括号、双引号、逗号等符号增加了不必要的空间开销,导致json格式存储的数据偏大。
[0046]
本发明基于b编码(bencoding)技术,对用户信息进行b编码,生成以bencoding格式存储的目标数据,能够省去不必要的开销,提升空间利用率。
[0047]
bencoding是bt(bittorrent,比特洪流)种子文件(.torrent)用来保存数据使用的一种编码格式方法。目前的b编码支持四种类型的数据:strings(字符串)、integers(整数)、lists(列表)和dictionaries(字典),编码规则分别如下:
[0048]
strings(字符串)编码为:[字符串长度]:[字符串],字符串长度的单位为字节。例如,字符串“test”经bencoding后生成:4:test,字符串“hello world”经bencoding后生成:11:hello world。
[0049]
integers(整数)编码为:i[整数]e,开始标记为i,结束标记为e。例如,整数1234经bencoding后生成:i1234e,整数-1234经bencoding后生成:i-1234e。整数没有大小限制,i0e表示整数0,i-0e为非法。
[0050]
lists(列表)编码为:l[bencoding编码类型]e,开始标记为l,结束标记为e,bencoding编码类型包括整数、字符串、列表和字典。例如,两个字符串[“test”,“abcde”]经bencoding后生成:l4:test5abcdee。
[0051]
dictionaries(字典)编码为d[bencoding字符串][bencoding编码类型]e,开始标记为d,结束标记为e,关键字需为bencoding字符串,值可以为任何bencoding编码类型。例如,字典结构{“tage”=20}经bencoding后生成:d3:agei20ee;字典结构{“path”=“c:/”,“filename”=“test.txt”}经bencoding后生成:d4:path3:c:/8:filename8:test.txte。
[0052]
在存储用户信息时,以用户名xiaoming,id号216732483473122为例,令牌签发时间是2021-04-14 12:23:34,令牌失效时间是2021-04-14 14:23:34。若以json格式存储数据,需要占用141个字符,如下:
[0053]
{
[0054]“subject”:“xiaoming”,
[0055]“name”:“小明”,
[0056]“id”:“216732483473122”,
[0057]“issuer”:“capms”,
[0058]“issuedat”:“2021-04-14 12:23:34”,
[0059]“expiration”:“2021-04-14 14:23:34”[0060]
}
[0061]
而本发明以bencoding格式存储数据,无需双引号、大括号等额外开销,可以节省用户信息数据所占用的空间消耗,存储上述的用户信息仅需占用117个字符,如下:
[0062]
7:subject8:xiaoming4:name4:小明2:id15:2167324834731226:issuer5:capms8:issuedati1618364994e10:expirationi1618368594e。
[0063]
本实施例中,用户信息包括多条字符串类型的信息内容;因此对用户信息进行b编码,即包括:以[字符串长度]:[字符串]的编码方式,分别获取每条信息内容的以字节为单位的字符串长度,生成每条信息内容以[字节数:信息内容]的bencoding格式存储的用户信息数据。例如,8:xiaoming即对应字节数为8的用户名字符串xiaoming,15:2167324834731226即对应字节数为15的id字符串216732483473122。
[0064]
另外,i1618364994e和i1618368594e分别对应令牌签发时间和令牌失效时间,也即本发明在对用户信息进行b编码时,还会对包含令牌签发时间和令牌失效时间的令牌有效期进行b编码。
[0065]
也即,在对用户信息进行b编码时,还对令牌有效期进行b编码,获得包含以bencoding格式存储的用户信息数据和以bencoding格式存储的令牌有效期数据的目标数据。
[0066]
进一步地,在目前的b编码中,由于只支持字符串、整数、列表和字典四种数据类型,因此在bencoding格式中需要对令牌签发时间和令牌失效时间等日期数据类型的数据使用时间戳来表示。这样,服务端在校验访问令牌时,需要将访问令牌中的令牌有效期数据提取出来,对时间戳进行二次处理成日期数据,然后再判断访问令牌是否处于有效期内,非常耗时,尤其是在高并发情况下,会严重影响服务端获取用户信息的效率。
[0067]
因此,本发明对b编码进行改进,增加日期数据类型,编码为t[日期数据]e,即分别在日期数据的首尾添加开始标识符t和结束标识符e。对令牌签发时间和令牌失效时间进行b编码,能够生成以t[令牌签发时间]e和t[令牌失效时间]e的bencoding格式存储的令牌有效期数据。
[0068]
从而,以改进后的bencoding格式存储上述的用户信息和令牌有效期,需占用135个字符,如下:
[0069]
7:subject8:xiaoming4:name4:小明2:id15:2167324834731226:issuer5:capms8:issuedatt2021-04-14 12:23:34e10:expirationt2021-04-14 14:23:34e。其中,t2021-04-14 12:23:34e即对应令牌签发时间2021-04-14 12:23:34,t2021-04-14 14:23:34e即对应令牌失效时间2021-04-14 14:23:34。
[0070]
采用改进的bencoding格式存储用户信息和令牌有效期,相比于json格式存储仍然能够减小访问令牌占用的存储空间,降低资源消耗,并且通过增加日期数据的编码存储,能够使服务端在校验访问令牌时根据访问令牌快速地同步获取到用户信息和令牌有效期,无需对时间数据进行二次处理,尤其适用于高并发场景,提高响应效率,提升系统性能。
[0071]
根据目标数据生成访问令牌,具体包括:对目标数据进行压缩,获得压缩后的目标数据,例如,可使用gzip压缩算法对目标数据进行压缩;对压缩后的目标数据进行加密,获得加密后的目标数据,例如,可使用sm4加密算法对压缩后的目标数据进行加密;对加密后的目标数据进行编码,生成访问令牌,例如,可使用base64编码算法对加密后的目标数据进行编码。
[0072]
gzip压缩算法、sm4加密算法和base64编码算法是已有的算法技术,本发明不再展开说明。在其他实施例中,也可以使用其他的压缩算法、加密算法、编码算法等,实现在令牌生成过程中的压缩、加密和编码。
[0073]
通过对目标数据进行压缩,能够进一步减少访问令牌的占用空间;通过对目标数据进行加密,能够确保用户信息的安全,防止用户信息泄露。
[0074]
向客户端返回携带访问令牌的第一响应数据,具体包括:将访问令牌放入第一响应数据的响应头的set-cookie字段中,以使客户端收到第一响应数据后,自动将访问令牌保存至cookie中,且客户端之后发送的请求中自动携带访问令牌。
[0075]
由于访问令牌存储在客户端的cookie中,根据客户端与服务端的http机制,访问令牌在客户端的存储及客户端发送请求时自动携带访问令牌的一系列过程都是用户无感知的,因此不管客户端发送的请求是否是ajax或axios请求,服务端都能通过获取cookie中的访问令牌进行解析获取到用户信息。
[0076]
图2示出一实施例中访问令牌的生成过程的场景,根据以上描述的访问令牌在生成过程中的步骤原理,结合图2所示,在一个具体场景中访问令牌的生成过程包括如下流程。
[0077]
s210,客户端200a发起登录请求,其中至少携带了用户名和密码。例如,客户端200a以用户名xiaoming和对应的密码进行登录。
[0078]
s220,服务端200b收到登录请求后,对用户身份进行验证,若验证通过则继续后续流程,若验证不通过则执行s220’返回错误信息。此步骤是已有的技术,因此不再展开说明。
[0079]
s230,服务端200b从数据库中查询用户信息,例如可根据登录请求中携带的id号216732483473122查询对应的用户信息。
[0080]
s240,服务端200b将查询到的用户信息,以及令牌有效期,以改进的bencoding格式进行存储。以用户信息包含用户名xiaoming和id号216732483473122,令牌有效期包含令牌签发时间2021-04-1412:23:34和令牌失效时间2021-04-1414:23:34为例,以bencoding格式存储的目标数据为:7:subject8:xiaoming4:name4:小明2:id15:2167324834731226:issuer5:capms8:issuedatt2021-04-14 12:23:34e10:expirationt2021-04-14 14:23:34e。
[0081]
s250,服务端200b使用gzip压缩算法对生成的bencoding字符串,及目标数据进行压缩,获得压缩串,即压缩后的目标数据。压缩串可通过java的hutool工具中的gzip函数得出,获得的压缩串为:[b@7eda2dbb。
[0082]
s260,服务端200b使用sm4加密算法对压缩串,进行加密,加密时使用的密钥key由服务端200b确定。通过sm4加密后生成的字符串为:ca74247e979b07725a600829915a7c16。
[0083]
s270,服务端200b对加密后的字符串进行base64编码,得到最终的访问令牌。最终获得的令牌数据为:y2e3ndi0n2u5nzlimdc3mjvhnjawodi5ote1ytdjmty=。
[0084]
而若采用目前主流的jwt技术,使用json格式存储,再进行base64编码,同样的用户信息将得到如下字符串:ewogicdigjxzdwjqzwn04ocdoukanxhpyw9taw5n4ocdlaogicdigjxuyw1l4ocdoukanewwj+ayjukanswkicag4occawtigj064ocdmje2nzmyndgzndczmtiy4ocdlaogicdigjxpc3n1zxligj064ocdy2fwbxpigj0sciagiokanglzc3vlzef04ocdoukantiwmjetmdqtmtqgmti6mjm6mztigj0sciagiokangv4cglyyxrpb27igj064ocdmjayms0wnc0xncaxndoymzoznokanqp9。可见,本发明以改进的bencoding格式存储数据再压缩后可以节省大量的存储空间。
[0085]
s280,服务端200b将访问令牌放入响应头的set-cookie中,并返回给客户端200a。
[0086]
s290,客户端200a收到服务端200b的响应数据后,识别到响应数据中有set-cookie字段,自动将值,即访问令牌保存至cookie中。从而,之后客户端200a每次发送请求时,将自动携带此cookie值,即访问令牌。
[0087]
采用上述的访问令牌的生成过程,以bencoding格式存储用户信息,结合压缩方法及对称加密函数,极大地节约令牌数据的占用空间,且有效预防用户信息被窃取或泄露,保证请求信息的完整性和可用性,保障网络请求的安全;并通过对bencoding编码方式的改进使服务端无需对时间数据进行二次处理,进一步提升服务端性能,尤其适用于高并发场景。
[0088]
在上述各实施例的访问令牌的生成及校验方法的基础上,图3示出又一实施例中访问令牌的生成及校验方法的主要步骤。上述任意实施例描述的关于访问令牌的生成及校验的特征和原理均可应用至图3所示的实施例。在下文对图3所示实施例的说明中,已经阐明的关于访问令牌的生成及校验的特征和原理将不再重复说明。
[0089]
参照图3所示,本实施例中访问令牌的生成及校验方法包括:步骤s310,响应于客户端的登录请求,根据登录请求获取用户信息;步骤s320,对用户信息和令牌有效期进行b编码,生成包含以bencoding格式存储的用户信息数据和以bencoding格式存储的令牌有效期数据的目标数据;步骤s330,根据目标数据生成访问令牌,向客户端返回携带访问令牌的第一响应数据;步骤s340,响应于携带访问令牌的访问请求,根据访问请求获取当前用户信息,并根据访问令牌获得用户信息和令牌有效期;步骤s350,依次校验令牌有效期是否有效及当前用户信息与用户信息相比是否更新;步骤s360,若令牌有效期失效,向客户端返回错误信息;步骤s370,若令牌有效期有效且当前用户信息未更新,向客户端返回访问请求对应的第二响应数据;步骤s380,若令牌有效期有效且当前用户信息已更新,基于当前用户信息生成更新令牌,并向客户端返回携带更新令牌的第二响应数据。
[0090]
当前用户信息和访问令牌可从cookie中获取。根据访问令牌获得用户信息和令牌有效期时,采用访问令牌的生成过程的逆过程处理访问令牌,获得目标数据,即依次对访问令牌进行base64解码、sm4解密(使用上述步骤s260中的密钥key)和解压缩,获得包含以bencoding格式存储的用户信息数据和以bencoding格式存储的令牌有效期数据的目标数据;再对目标数据进行b解码,即b编码的逆过程,获得用户信息和令牌有效期。
[0091]
依次校验令牌有效期是否有效及当前用户信息与用户信息相比是否更新时,先校验令牌有效期是否有效,即查看令牌有效期是否过期,若已过期则认证失败,返回错误信息;若未过期,即令牌有效期有效,继续判断访问令牌是否在黑名单池中,若在则返回错误信息,若不在则校验当前用户信息是否更新,若未更新则返回访问请求对应的响应数据,若已更新则基于当前用户信息,采用上述说明的令牌生成过程重新生成访问令牌,并返回携
带更新的访问令牌的响应数据。以及,生成更新的访问令牌后,将旧的访问令牌加入黑名单池中。
[0092]
图4示出一实施例中访问令牌的校验过程的场景,根据以上描述的访问令牌在校验过程中的步骤原理,结合图4所示,在一个具体场景中访问令牌的校验过程包括如下流程。
[0093]
s410,客户端200a发起访问请求,例如是页面访问请求,其中携带访问令牌。
[0094]
s420,服务端200b对访问令牌进行base64解码,获得加密串。
[0095]
s430,服务端200b对加密串进行sm4解密(使用sm4加密时的密钥key),获得压缩串。
[0096]
s440,服务端200b对压缩串进行gzip解压缩,获得以bencoding格式存储的目标数据。
[0097]
s450,服务端200b对目标数据进行b解码,即以bencoding格式解析数据,获得用户信息和令牌有效期。
[0098]
s460,服务端200b根据令牌有效期,判断访问令牌是否在有效期内;若否则认证失败,执行s460’返回错误信息,若是则继续后续流程。
[0099]
s470,服务端200b判断访问令牌是否在黑名单池中,若是则认证失败,执行s460’返回错误信息,若否则服务端200b认证成功,结合用户信息进行之后的s480业务逻辑操作。
[0100]
s480业务逻辑操作具体包括校验访问请求对应的当前用户信息与访问令牌中的用户信息相比是否更新,若未更新则返回对应的响应数据,若已更新则采用上述说明的令牌生成过程重新生成访问令牌,并返回携带更新的访问令牌的响应数据,并将旧的访问令牌加入黑名单池中,不再重复说明。
[0101]
s490,客户端200a根据响应数据,进行页面展示数据。
[0102]
在分布式的情况下,本发明的访问令牌的生成及校验方法同样适用,只需在分布式的各机器中将sm4加密算法所使用的密钥进行统一即可。
[0103]
本发明的访问令牌的生成及校验方法,通过bencoding格式存储用户信息,能够有效节省令牌数据的占用空间,以便于访问令牌存入cookie中,从而在非ajax或axios请求时,服务端仍然能够获取到用户信息;且本发明对bencoding编码方式进行改进,使服务端获取用户信息时无需二次处理时间数据,有效提升服务端性能,尤其适用于高并发场景;本发明还在令牌数据生成过程中引入sm4加密算法,有效预防用户信息泄露,保证请求信息的完整性和可用性,保障网络请求的安全。
[0104]
本发明实施例还提供一种访问令牌的生成及校验装置,可用于实现上述任意实施例描述的访问令牌的生成及校验方法。上述任意实施例描述的访问令牌的生成及校验方法的特征和原理均可应用至下面的访问令牌的生成及校验装置实施例。在下面的访问令牌的生成及校验装置实施例中,对已经阐明的关于访问令牌的生成及校验的特征和原理不再重复说明。
[0105]
图5示出一实施例中访问令牌的生成及校验装置的主要模块,参照图5所示,访问令牌的生成及校验装置500配置于服务端,具体包括:请求响应模块510,配置为响应于客户端的登录请求,根据登录请求获取用户信息;bencoding模块520,配置为对用户信息进行b编码,生成以bencoding格式存储的目标数据;令牌生成模块530,配置为根据目标数据生成
访问令牌,向客户端返回携带访问令牌的第一响应数据。
[0106]
进一步地,访问令牌的生成及校验装置500还可包括实现上述各访问令牌的生成及校验方法实施例的其他流程步骤的模块,例如,还可包括实现图2至图4所示的访问令牌的生成及校验方法实施例中的各个流程步骤的模块,各个模块的具体原理可参照上述各访问令牌的生成及校验方法实施例的描述,此处不再重复说明。
[0107]
如上所述,本发明的访问令牌的生成及校验装置,通过bencoding格式存储用户信息,能够减小访问令牌占用的存储空间,降低资源消耗;通过改进bencoding编码方式,增加日期数据的编码存储,能够根据访问令牌快速地同步获取到用户信息和令牌有效期,无需对时间数据进行二次处理,尤其适用于高并发场景,提高响应效率,提升系统性能;通过对目标数据进行压缩,能够进一步减少访问令牌的占用空间,且通过对目标数据进行加密,能够确保用户信息的安全,防止用户信息泄露;另外,通过将访问令牌存储在客户端的cookie中,实现不管客户端发送的请求是否是ajax或axios请求,服务端都能通过获取cookie中的访问令牌进行解析获取到用户信息。
[0108]
本发明实施例还提供一种电子设备,包括处理器和存储器,存储器中存储有可执行指令,可执行指令被处理器执行时,实现上述任意实施例描述的访问令牌的生成及校验方法。
[0109]
本发明的电子设备配置于服务端,通过bencoding格式存储用户信息,能够减小访问令牌占用的存储空间,降低资源消耗;通过改进bencoding编码方式,增加日期数据的编码存储,能够根据访问令牌快速地同步获取到用户信息和令牌有效期,无需对时间数据进行二次处理,尤其适用于高并发场景,提高响应效率,提升系统性能;通过对目标数据进行压缩,能够进一步减少访问令牌的占用空间,且通过对目标数据进行加密,能够确保用户信息的安全,防止用户信息泄露;另外,通过将访问令牌存储在客户端的cookie中,实现不管客户端发送的请求是否是ajax或axios请求,服务端都能通过获取cookie中的访问令牌进行解析获取到用户信息。
[0110]
图6是本发明实施例中电子设备的结构示意图,应当理解的是,图6仅仅是示意性地示出各个模块,这些模块可以是虚拟的软件模块或实际的硬件模块,这些模块的合并、拆分及其余模块的增加都在本发明的保护范围之内。
[0111]
如图6所示,电子设备600以通用计算设备的形式表现。电子设备600的组件包括但不限于:至少一个处理单元610、至少一个存储单元620、连接不同平台组件(包括存储单元620和处理单元610)的总线630、显示单元640等。
[0112]
其中,存储单元存储有程序代码,程序代码可以被处理单元610执行,使得处理单元610执行上述任意实施例描述的访问令牌的生成及校验方法的步骤。例如,处理单元610可以执行如图1至图4所示的步骤。
[0113]
存储单元620可以包括易失性存储单元形式的可读介质,例如随机存取存储单元(ram)6201和/或高速缓存存储单元6202,还可以进一步包括只读存储单元(rom)6203。
[0114]
存储单元620还可以包括具有一个或多个程序模块6205的程序/实用工具6204,这样的程序模块6205包括但不限于:操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。
[0115]
总线630可以为表示几类总线结构中的一种或多种,包括存储单元总线或者存储
单元控制器、外围总线、图形加速端口、处理单元或者使用多种总线结构中的任意总线结构的局域总线。
[0116]
电子设备600也可以与一个或多个外部设备700通信,外部设备700可以是键盘、指向设备、蓝牙设备等设备中的一种或多种。这些外部设备700使得用户能与该电子设备600进行交互通信。电子设备600也能与一个或多个其它计算设备进行通信,所示计算机设备包括路由器、调制解调器。这种通信可以通过输入/输出(i/o)接口650进行。并且,电子设备600还可以通过网络适配器660与一个或者多个网络(例如局域网(lan),广域网(wan)和/或公共网络,例如因特网)通信。网络适配器660可以通过总线630与电子设备600的其它模块通信。应当明白,尽管图中未示出,可以结合电子设备600使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、raid系统、磁带驱动器以及数据备份存储平台等。
[0117]
本发明实施例还提供一种计算机可读的存储介质,用于存储程序,程序被执行时实现上述任意实施例描述的访问令牌的生成及校验方法。在一些可能的实施方式中,本发明的各个方面还可以实现为一种程序产品的形式,其包括程序代码,当程序产品在终端设备上运行时,程序代码用于使终端设备执行上述任意实施例描述的访问令牌的生成及校验方法。
[0118]
本发明的计算机可读的存储介质配置于服务端,通过bencoding格式存储用户信息,能够减小访问令牌占用的存储空间,降低资源消耗;通过改进bencoding编码方式,增加日期数据的编码存储,能够根据访问令牌快速地同步获取到用户信息和令牌有效期,无需对时间数据进行二次处理,尤其适用于高并发场景,提高响应效率,提升系统性能;通过对目标数据进行压缩,能够进一步减少访问令牌的占用空间,且通过对目标数据进行加密,能够确保用户信息的安全,防止用户信息泄露;另外,通过将访问令牌存储在客户端的cookie中,实现不管客户端发送的请求是否是ajax或axios请求,服务端都能通过获取cookie中的访问令牌进行解析获取到用户信息。
[0119]
程序产品可以采用便携式紧凑盘只读存储器(cd-rom)并包括程序代码,并可以在终端设备,例如个人电脑上运行。然而,本发明的程序产品不限于此,其可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
[0120]
程序产品可以采用一个或多个可读介质的任意组合。可读介质可以是可读信号介质或者可读存储介质。可读存储介质例如可以为但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。可读存储介质的更具体的例子包括但不限于:具有一个或多个导线的电连接、便携式盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。
[0121]
可读存储介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了可读程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。可读存储介质还可以是可读存储介质以外的任何可读介质,该可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。可读存储介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、有线、光缆、rf等等,或者上述的任意合适的组合。
[0122]
可以以一种或多种程序设计语言的任意组合来编写用于执行本发明操作的程序代码,程序设计语言包括面向对象的程序设计语言—诸如java、c++等,还包括常规的过程式程序设计语言—诸如“c”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(lan)或广域网(wan),连接到用户计算设备,或者,可以连接到外部计算设备,例如利用因特网服务提供商来通过因特网连接。
[0123]
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1