-简介
1.JSON Web Token (JWT)是一种基于 token 的认证方案。
2.简单的说,JWT就是一种Token的编码算法,服务器端负责根据一个密码和算法生成Token,然后发给客户端,客户端只负责后面每次请求都在HTTP header里面带上这个Token,服务器负责验证这个Token是不是合法的,有没有过期等,并可以解析出subject和claim里面的数据。
3.注意:JWT里面的数据是BASE64编码的,没有加密,因此不要放如敏感数据
4.组成:Header+Claims+Signature(头部+载荷+签证)
- 创建一个TOKEN
String token = Jwts.builder().setSubject().setClaims().signWith(alg, privateKey).compact();
1.subject,头部
2.claims,载荷
long laterSeconds = Constants.EXPIRE_DAYS * Constants.SECOND_OF_DAY; // 30天过期
Date now = new Date(System.currentTimeMillis());
Date later = new Date(now.getTime() + laterSeconds * Constants.MS_OF_ONE_SECOND);
Claims claims = JWTs.claims().setIssuer("xxx").setId(UUID.randomUUID().toString().replaceAll("-", "")).setIssuedAt(now).setExpiration(later);
issuer:token的发行者,id:token,issuedAt:开始时间,expiration:失效时间
3.signWith,签证
4.alg,SignatureAlgorithm alg = SignatureAlgorithm.RS256;