java写jwt生成器和解析器
时间: 2023-10-20 14:16:24 浏览: 222
JWT(JSON Web Token)是一种用于身份验证和授权的开放标准,可以在应用程序和服务之间安全地传输声明。下面是使用Java编写JWT生成器和解析器的示例代码。
首先,你需要使用Maven或Gradle添加以下依赖项:
```xml
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
```
然后,你可以使用以下代码生成JWT:
```java
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
public class JwtGenerator {
private static final String SECRET_KEY = "your-secret-key"; // 你的密钥
public static String generateJwt(String subject, long ttlMillis) {
// 设置签名算法和密钥
SignatureAlgorithm signatureAlgorithm = SignatureAlgorithm.HS256;
byte[] apiKeySecretBytes = SECRET_KEY.getBytes();
Key signingKey = new SecretKeySpec(apiKeySecretBytes, signatureAlgorithm.getJcaName());
// 设置过期时间
long nowMillis = System.currentTimeMillis();
Date now = new Date(nowMillis);
Date expiration = new Date(nowMillis + ttlMillis);
// 创建JWT
JwtBuilder builder = Jwts.builder()
.setIssuedAt(now)
.setSubject(subject)
.setExpiration(expiration)
.signWith(signatureAlgorithm, signingKey);
// 返回JWT
return builder.compact();
}
}
```
在上面的代码中,`generateJwt`方法接受一个主题和一个时间戳(以毫秒为单位),并返回一个JWT字符串。使用`setIssuedAt`方法设置JWT的发行时间,使用`setSubject`方法设置JWT的主题,使用`setExpiration`方法设置JWT的过期时间,并使用`signWith`方法设置签名算法和密钥。
接下来,你可以使用以下代码解析JWT:
```java
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
public class JwtParser {
private static final String SECRET_KEY = "your-secret-key"; // 你的密钥
public static String parseJwt(String jwt) {
// 解析JWT
Claims claims = Jwts.parser()
.setSigningKey(SECRET_KEY.getBytes())
.parseClaimsJws(jwt)
.getBody();
// 返回JWT主题
return claims.getSubject();
}
}
```
在上面的代码中,`parseJwt`方法接受一个JWT字符串,并返回JWT的主题。使用`setSigningKey`方法设置解析JWT时使用的密钥,并使用`parseClaimsJws`方法解析JWT。最后,使用`getBody`方法获取JWT的声明。
阅读全文