Ejemplo simple de Jwt en Java
Las dependencias necesarias para usar JWT son las siguientes:
<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>
Se genera una clave secreta usando el algoritmo HS256 (HMAC SHA-256). Esta clave será utilizada tanto para firmar como para verificar el JWT.
Se define un contenido con el valor "avion" como sujeto (setSubject(cadena)). También se agrega la fecha de emisión (setIssuedAt(now)). Luego, el JWT se firma con la clave secreta (signWith(key)) y se genera en formato compacto y codificado en Base64 (compact()).
Se crea un parser (Jwts.parserBuilder()). Luego, se establece la clave secreta para verificar la firma (setSigningKey(key)). A continuación, se parsea el token, validando la firma (parseClaimsJws(token)). Finalmente, se obtiene el contenido, que contiene el "subject", es decir, "avion".
package japdp;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import io.jsonwebtoken.security.Keys;
import java.security.Key;
import java.util.Date;
public class App {
private static final Key key = Keys.secretKeyFor(SignatureAlgorithm.HS256);
public static void main( String[] args )
{
Date now = new Date();
String cadena = "avion";
String token = Jwts.builder().setSubject(cadena)
.setIssuedAt(now)
.signWith(key)
.compact();
String tokenDescodificado = Jwts.parserBuilder().setSigningKey(key)
.build()
.parseClaimsJws(token)
.getBody()
.getSubject();
System.out.println("Cosa: " + cadena);
System.out.println("Token: " + token);
System.out.println("Claims: " + tokenDescodificado);
}
}