Token安全靠自身,无需Redis加固(token不加redis)

Token安全靠自身,无需Redis加固

维护安全乃构建安全系统的基石,在当下的网络系统中,实现Token安全是一件大事。常用的Token安全方案有Session和JWT这两种。其中,SessionToken采用Redis加强,而对于JWT来说,则是可以直接不用Redis加强安全,自身就能保持安全。

为什么JWT有能力实现自身安全,而不用Redis,这在于JWT自成一套生命周期管理系统,当然,使用Redis可以增加安全等级,但是也不绝对。

首先是JWT的本质,JWT的协议由头部、Payload和Signature三部分组成,头部Header用来描述关于Token的有关信息,例如是JWT类型,签发者,使用的算法等。紧接着是Payload,它包含了Token的声明,也就是有效负载,它真正存储有用的信息,比如Token的创建时间、过期时间等,它可以采用base64url编码来隐蔽这些信息,然后最后一部分Signature是使用保存在头部Header中的算法生成的签名,签名由三部分Header、Payload以及一个密钥(secret)组成

因此,采用JWT的安全机制来实现Token安全的话,就可以利用这种本质的机理实现Token的安全,无需Redis加固,这也就是为什么JWT既可以实现安全,又可以不用Redis加强安全的原因。

以下是JWT实现Token安全的代码实例。

下面就是签发Token的部分

“`java

import io.jsonwebtoken.Jwts;

import io.jsonwebtoken.SignatureAlgorithm;

import java.util.Date;

public class JwtUtil {

public static String generateToken(String secret, long expireTime) {

Date now = new Date();

Date expireDate = new Date (now.getTime() + expireTime);

// 生成签名

return Jwts.builder()

// 设置token基本信息

.setHeaderParam(“typ”, “JWT”)

.setSubject(“security”)

.setIssuedAt(now)

.setExpiration(expireDate)

.signWith(SignatureAlgorithm.HS256, secret)

.compact();

}

}


jwt的安全措施依赖于调整了Token的生命周期,在构建的Token中,记录了相关的声明,用来管理Token的生命周期,以此实现安全,所以JWT本身并不需要借助于Redis加强安全,而是可以自身完成安全。

JWT很轻松地实现了不用Redis加固Token的安全,没必要采用Redis加固,但是采用JWT的前提,设计Token机制比较晦涩,切记安全要加强,使用JWT是一个很好的选择。

数据运维技术 » Token安全靠自身,无需Redis加固(token不加redis)