Pessoal, segue uma sugestão para quem estiver fazendo com as versões mais atualizadas:
@Component
class JWTUtil {
@Value("\${jwt.secret}")
private var secret: String = "2a12Dpr9yBjZksrrC34hnQEG1uDyF5HKckz3Cob4j5md1Jl3jXPF1ejzi"
private val expiration: Long = 60000
private val key = Keys.hmacShaKeyFor(secret.toByteArray(StandardCharsets.UTF_8))
fun generateToken(username: String): String {
return Jwts
.builder()
.expiration(Date(System.currentTimeMillis() + expiration))
.signWith(key)
.compact()
}
fun isValid(jwt: String?): Boolean {
return try {
Jwts.parser()
.verifyWith(key)
.build()
.parseSignedClaims(jwt)
true
} catch (e: IllegalArgumentException) {
false
}
}
fun getAuthentication(jwt: String?): UsernamePasswordAuthenticationToken {
val username = Jwts.parser()
.verifyWith(key)
.build()
.parseSignedClaims(jwt)
return UsernamePasswordAuthenticationToken(username, null, null)
}
}
Aqui funcionou perfeitamente.