java-jwt 是一个用于在 Java 应用程序中创建和验证 JSON Web Tokens (JWT) 的库。它由 Auth0 提供,功能强大且易于使用,适合处理基于 JWT 的身份验证和授权。
以下是一些关于 java-jwt 的关键点和示例:
安装
通过 Maven 或 Gradle 添加依赖:
Maven
Xml
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>4.4.0</version> <!-- 请根据需要选择最新版本 -->
</dependency>
Gradle
Gradle
implementation 'com.auth0:java-jwt:4.4.0' // 请根据需要选择最新版本
生成 JWT 示例
以下代码展示了如何使用 java-jwt 生成一个签名的 JWT:
Java
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
public class JwtExample {
public static void main(String[] args) {
Algorithm algorithm = Algorithm.HMAC256("your-secret-key"); // 使用 HMAC256 算法和密钥
String token = JWT.create()
.withIssuer("auth0") // 设置发行者
.withSubject("user123") // 设置主题(用户标识)
.withClaim("role", "admin") // 自定义声明
.sign(algorithm); // 签名
System.out.println("Generated Token: " + token);
}
}
验证 JWT 示例
验证 JWT 时,需要确保使用与生成时相同的算法和密钥:
Java
import com.auth0.jwt.JWT;
import com.auth0.jwt.algorithms.Algorithm;
import com.auth0.jwt.exceptions.JWTVerificationException;
import com.auth0.jwt.interfaces.DecodedJWT;
import com.auth0.jwt.interfaces.JWTVerifier;
public class JwtVerifyExample {
public static void main(String[] args) {
String token = "your-jwt-token"; // 替换为实际的 JWT
try {
Algorithm algorithm = Algorithm.HMAC256("your-secret-key");
JWTVerifier verifier = JWT.require(algorithm)
.withIssuer("auth0") // 验证发行者
.build();
DecodedJWT jwt = verifier.verify(token); // 验证并解码
System.out.println("Token is valid!");
System.out.println("Subject: " + jwt.getSubject());
System.out.println("Role: " + jwt.getClaim("role").asString());
} catch (JWTVerificationException exception) {
System.err.println("Invalid Token: " + exception.getMessage());
}
}
}
常见功能
-
设置过期时间:
Javaimport java.util.Date; String token = JWT.create() .withExpiresAt(new Date(System.currentTimeMillis() + 3600 * 1000)) // 1小时后过期 .sign(algorithm); -
解析 JWT:
JavaDecodedJWT decodedJWT = JWT.decode(token); System.out.println("Issuer: " + decodedJWT.getIssuer()); System.out.println("Subject: " + decodedJWT.getSubject()); -
支持多种算法: 除了 HMAC256,还支持 RSA、ECDSA 等算法。
注意事项
- 安全性:请妥善保管密钥,避免泄露。
- 时钟同步:验证时可能涉及时间戳,请确保服务器时间同步。
- 依赖更新 :定期检查
java-jwt的版本更新以获取最新功能和安全修复。
如果你有更多需求或问题,可以随时告诉我!