java jwt 示例
时间: 2024-08-01 19:01:47 浏览: 52
使用JJWT库的Java JWT令牌教程
JWT(Json Web Tokens)是一种开放标准,用于在各方之间安全地传输信息,特别适合无状态的API。在Java中,我们可以使用一些库如`java.util.Base64`、`org.json`以及专门处理JWT的库如`jjwt`来创建和验证JWT。
下面是一个简单的Java JWT示例:
```java
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
public class JwtExample {
private static final String SECRET_KEY = "your-secret-key"; // 你的密钥
private static final long EXPIRATION_TIME_MINS = 60; // 过期时间(分钟)
public static void main(String[] args) {
Claims claims = Jwts.claims()
.setSubject("John Doe") // 签名主体
.setExpiration(new Date(System.currentTimeMillis() + EXPIRATION_TIME_MINS * 60 * 1000)) // 设置过期时间
.setIssuer("your-issuer"); // 发布者
String token = Jwts.builder()
.setClaims(claims)
.signWith(SignatureAlgorithm.HS256, SECRET_KEY)
.compact(); // 生成JWT
System.out.println("Generated JWT: " + token);
}
}
```
在这个例子中,我们首先创建了一个包含声明(Claims)的对象,然后使用`Jwts.builder()`构建JWT,设置签名算法和密钥,最后通过`compact()`方法将其编码成字符串形式。
要在服务器端验证JWT,你需要解码并检查其签名和有效性:
```java
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jws;
public Claims validateToken(String jwt) {
try {
Jws<Claims> jws = Jwts.parser().setSigningKey(SECRET_KEY).parseClaimsJws(jwt);
return jws.getBody();
} catch (Exception e) {
throw new RuntimeException("Invalid JWT", e);
}
}
```
阅读全文