JWT的创建和解析简单说明
添加依赖:Maven<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt-api</artifactId><version>0.10.5</ver
·
添加依赖:
Maven
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.10.5</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.10.5</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>0.10.5</version>
<scope>runtime</scope>
</dependency>
Gradle
dependencies {
compile 'io.jsonwebtoken:jjwt-api:0.10.5'
runtime 'io.jsonwebtoken:jjwt-impl:0.10.5',
// Uncomment the next line if you want to use RSASSA-PSS (PS256, PS384, PS512) algorithms:
//'org.bouncycastle:bcprov-jdk15on:1.60',
'io.jsonwebtoken:jjwt-jackson:0.10.5'
}
快速入门
生成
//生成密钥
Key key = Keys.secretKeyFor(SignatureAlgorithm.HS512);
//生成Token
String token = Jwts.builder()
.setSubject("Wyndem")
.signWith(key).compact();
//打印
System.out.println(token);
eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJXeW5kZW0ifQ.fss-WOWd4XHlscPy1p8D5INkl4k4fpJqrO-4dhl9HpZF5h7lsykoPi2kqwzBSaI0lNRhRNOAHJIKIeG4ACTwEw
解析
//生成密钥
Key key = Keys.secretKeyFor(SignatureAlgorithm.HS512);
//生成Token
String token = Jwts.builder()
.setSubject("Wyndem")
.signWith(key).compact();
//解析,获取存入Subject中的值
String subject = Jwts.parser().setSigningKey(key).parseClaimsJws(token).getBody().getSubject();
System.out.println(subject); //打印 ---> Wyndem
加强安全
使用非对称的密钥相对来说会比较安全。我们可以使用这种方式来生成和解析:
//生成密码
KeyPair keyPair = Keys.keyPairFor(SignatureAlgorithm.RS512);
//使用私钥,生成Token
String token = Jwts.builder()
.setSubject("Wyndem")
.signWith(keyPair.getPrivate(),SignatureAlgorithm.RS512).compact();
//使用公钥 解析
String subject = Jwts.parser()
.setSigningKey(keyPair.getPublic())
.parseClaimsJws(token)
.getBody().getSubject();
System.out.println(subject); //打印 --> Wyndem
其他方法
- setHeaderParameter(“kid”, “myKeyId”) --数据存储到头部.可以用getHeader来获取
- setHeader --参数为Map。获取方式和上面一样
- claim --存放Map。获取方式:getBody().get(key)
- setIssuer --该JWT的签发者
- setSubject – 该JWT所面向的用户
- setAudience --接收该JWT的一方
- setExpiration --设置过期时间 类型为: java.util.Date
- setNotBefore --设置在发放时间之前,该Token不生效 类型为:Date
- setIssuedAt --设置发放的时间,类型为:Date
- setId --设置ID,类型为:UUID
更多推荐
已为社区贡献2条内容
所有评论(0)