APP下载

基于JSON Web Token的无状态账户系统的设计

2016-10-18李凯

现代计算机 2016年16期
关键词:凭证密钥内存

李凯

(西南科技大学,绵阳621000)

基于JSON Web Token的无状态账户系统的设计

李凯

(西南科技大学,绵阳621000)

在Web服务中,对用户身份的验证和标识是不可缺少的。由于过去基于Session机制存在共享和域限制的问题,使用token成为新的选择。使用基于JSON Web Token的机制,将用户信息转换为一个加密的token,保存于客户端中,解决共享和域的限制问题,而且将服务器的内存压力分摊到客户端中。经实验表明,该方案对于用户验证识别是行之有效的。

JSON Web Token;无状态;账户系统

0 引言

在过去的账户体系中,一般使用Session的机制以标识用户。但是,由于应用场景的不断复杂化,Session机制已经不能再足以应对。主要问题有:

(1)随着分布式技术的大量应用,当服务器处在分布式的环境下时,相互之间不能共享Session,这就导致了用户的登录会话不能良好的保持。

(2)RESTful的思想也正逐步被广泛使用。但是,使用Session的机制会同RESTful的“无状态”的原则相矛盾,引入新的“状态”。

(3)在实际的生产中,API服务器和App服务器可能是不同的服务器。由于Cookie的域的限制,处于后端的App服务器使用储存在前端App服务器中的Session是比较困难的。

一般使用Sticky Sessions解决Session共享的问题,但会增加服务器的压力,而且Session的机制本身就要占用服务器大量的内存。

JWT是基于token的验证方式,其在为用户生成标识其身份的token,一次性把所有用户的标识信息保存于此token中。不同于Session将信息保存于服务器内存中,而是将服务器内存的压力分摊到客户端中,让客户端保存此token。并且token独立于服务器,从而脱离了域的限制,在网络技术高速发展的今天,提供了一种新的验证方式。

1 JSON Web Token

JSON Web Token下简称JWT,是一个基于RFC 7519的信息传送协议,由三部分构成,Header,Payload,Signature。

Header部分用于描述JWT使用的加密的选项和其他附加选项。Payload部分会包含一些数据,这些数据是作为JWT的附加元数据。Signature是按照Header部分指明的算法,将通过Base64URL编码的Header和Payload部分进行签名,防止token被恶意的篡改。

2 无状态账户体系的设计

2.1系统基本要求

服务器:用于处理客户端的请求。

数据库:用于保存用户的数据。

缓存:用于保存颁发给用户的授权token的密钥。

2.2实现基本设计

首先,验证用户通过后,为其颁发一个其独有的token凭证,在此凭证中包含了用户的基本信息等数据。此后,客户端应将此token附加在HTTP请求的头部分,访问服务器的其他资源,服务器即可以从其token中获得用户的基本信息,并做出相应的响应。

图1 用户数据请求

另外,从安全的角度考虑,每一个颁发的token都应有一定的时间限制,防止因token泄露导致用户个人数据受到威胁。然而对于经常使用的用户,反复的登录会带来不良的用户体验,此问题的解决依赖于access token和refresh token。

access token,用户访问凭证,用于标识用户。其包含了用户的基本信息,是代表某个用户的唯一标识。其有一定的使用时间限制,在此时间限制之内可以使用任意次数。

refresh token,token刷新凭证,用于access token的更新。一个refresh token对应一个access token,其生存时间长于access token,但是只能使用一次。

当用户登录时,先为此用户生成一个随机的密钥,再使用这个密钥为其分配一个access token和refresh token,并保存密钥到缓存之中,便于此后的token的解密。当access token将要过期时,客户端即可以通过refresh token重新获得一个新的access token和refresh token,这样就延长了access token的过期时间,同时,原有的token都不再合法,此后的数据交互则替换原有的,将新颁发的access token附加在请求上。而且,如果保持一定的token刷新频率,由于旧的token会很快地过期,提高了系统的安全性。

2.3处理流程描述

(1)用户登录

图2 用户登录

如图2所示,服务器在收到用户的凭证,如用户名和密码之后,先对其进行身份验证,若通过了验证,则依照JWT协议为其颁发access token和refresh token,并保存access token、密钥键值对到缓存中,便于后面的解密。若没有通过身份验证,则不为其颁发token。

(2)Token的刷新

如图3为token刷新的流程图。验证accessToken和refreshToken的合法性的key可以从缓存中通过accessToken获得。验证通过后,清除旧的key并为其颁发新的token,保存新的key。若未通过验证,则拒绝为其颁发新的token,要求重新登录,获得授权。

(3)用户登出

如图4为用户请求登出的流程图。其在验证accessToken合法之后,即可展开对用户数据的后续的清理工作。

3 实验验证

对上面的设计进行了实际的编码,并对其对了相应的验证。事实证明,上述的设计是实际可行的。由于实际的token有一定的长度,故在表1中,对accessToken和refreshToken进行了简写。

图4 用户登出

表1 实验验证步骤和结果

4 结语

本文着重介绍了基于JWT协议的账户体系的整体设计,其解决了Session机制下面所存在的问题,降低了开发网络服务系统的复杂性和成本。本文是对于利用JWT协议构建账户体系的探索,为Web服务的开发提供参考。

[1]Bradley J,Sakimura N,Jones M.JSON Web Token(JWT)[J],2015.

[2]Jones M B.The Emerging JSON-Based Identity Protocol Suite[C]//W3C Workshop on Identity in the Browser.2011:1-3.

[3]Zheng K,Jiang W.A Token Authentication Solution for Hadoop Based on Kerberos Pre-Authentication[C].Data Science and Advanced Analytics(DSAA),2014 International Conference on.IEEE,2014:354-360.

[4]Peng D,Li C,Huo H.An Extended Username Token-based Approach for REST-style Web Service Security Authentication[C].Computer Science and Information Technology,2009.ICCSIT 2009.2nd IEEE International Conference on.IEEE,2009:582-586.

Design of Stateless Account System Based on JSON Web Token

LI Kai
(Southwest University of Science and Technology,Mianyang621000)

Authentication and identification of users'identity is indispensable in the Web service.Token has become a new choice because of the problems of sharing and domain constraint based on Session mechanism in the past.Uses the mechanism based on JSON web token,the users'information will be transformed into an encrypted token and stored in the client.This mechanism not only solves the problem of sharing and domain constraint,but also allocates the memory pressure to the client.The experiments show that this scheme is effective for users'authentication and identification.

JSON Web Token;Statelessness;Account System

1007-1423(2016)16-0000-04DOI:10.3969/j.issn.1007-1423.2016.16.017

李凯(1995-),男,四川自贡人,在读本科,研究方向为移动互联网技术

2016-03-31

2016-05-21

猜你喜欢

凭证密钥内存
幻中邂逅之金色密钥
幻中邂逅之金色密钥
密码系统中密钥的状态与保护*
2021年《理财》《财经审计法规选编》征订单
笔记本内存已经在涨价了,但幅度不大,升级扩容无须等待
“春夏秋冬”的内存
企业所得税税前扣除凭证管理凸显九大亮点
TPM 2.0密钥迁移协议研究
畅捷通T3凭证处理常见问题解析
内存搭配DDR4、DDR3L还是DDR3?