在Spring Boot中验证RSA256签名的JWT令牌,可以按照以下步骤进行:
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.11.2</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>0.11.2</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.bouncycastle</groupId>
<artifactId>bcprov-jdk15on</artifactId>
<version>1.68</version>
</dependency>
import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.bouncycastle.util.io.pem.PemObject;
import org.bouncycastle.util.io.pem.PemReader;
import java.io.FileReader;
import java.security.KeyFactory;
import java.security.PublicKey;
import java.security.spec.X509EncodedKeySpec;
import java.util.Base64;
public class JwtUtils {
public static boolean verifyToken(String token, String publicKeyPath) {
try {
PemReader pemReader = new PemReader(new FileReader(publicKeyPath));
PemObject pemObject = pemReader.readPemObject();
byte[] publicKeyBytes = pemObject.getContent();
pemReader.close();
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(publicKeyBytes);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
PublicKey publicKey = keyFactory.generatePublic(keySpec);
Jwts.parserBuilder()
.setSigningKey(publicKey)
.build()
.parseClaimsJws(token);
return true;
} catch (Exception e) {
e.printStackTrace();
return false;
}
}
}
@RestController
public class UserController {
@GetMapping("/user")
public String getUser(@RequestHeader("Authorization") String token) {
String jwtToken = token.substring(7); // 去除Bearer前缀
boolean isValid = JwtUtils.verifyToken(jwtToken, "path/to/publicKey.pem");
if (isValid) {
// 验证通过,返回用户信息
return "User Info";
} else {
// 验证失败,返回错误信息
return "Invalid Token";
}
}
}
以上就是在Spring Boot中验证RSA256签名的JWT令牌的步骤。通过引入相关依赖,创建JWT工具类,调用工具类进行验证,可以实现JWT令牌的安全验证。在实际应用中,可以根据具体需求进行定制和扩展。
推荐的腾讯云相关产品:腾讯云密钥管理系统(KMS)。腾讯云KMS提供了密钥管理、加密计算、密钥权限管理等功能,可以帮助用户更方便地管理和使用密钥,保障数据的安全性。详情请参考腾讯云KMS产品介绍:腾讯云KMS。
领取专属 10元无门槛券
手把手带您无忧上云