Generar un Token en Java
En Java se pueden generar tokens de diferentes formas dependiendo del caso de uso: identificadores únicos, valores aleatorios seguros o tokens de autenticación (JWT).
1. Usando UUID
La forma más simple y rápida de generar un token único.
import java.util.UUID;
public class GenerarToken {
public static void main(String[]
args) {
String token =
UUID.randomUUID().toString();
System.out.println("Token
generado: " + token);
}
}
2. Usando SecureRandom
Para generar tokens más seguros, ideales en autenticación.
import java.security.SecureRandom;
import java.util.Base64;
public class GenerarToken {
public static void main(String[]
args) {
SecureRandom random = new
SecureRandom();
byte[] bytes = new byte[32]; //
256 bits
random.nextBytes(bytes);
String token =
Base64.getUrlEncoder().withoutPadding().encodeToString(bytes);
System.out.println("Token
generado: " + token);
}
}
3. Usando JWT (JSON Web Token)
Para aplicaciones web y APIs, se recomienda usar JWT con la librería JJWT.
Dependencias Maven (pom.xml):
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-api</artifactId>
<version>0.11.5</version>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-impl</artifactId>
<version>0.11.5</version>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt-jackson</artifactId>
<version>0.11.5</version>
<scope>runtime</scope>
</dependency>
Ejemplo de generación de JWT:
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import java.util.Date;
public class GenerarJWT {
public static void main(String[]
args) {
String secreto = "claveSuperSecreta12345";
String token = Jwts.builder()
.setSubject("usuario123")
.setIssuedAt(new Date())
.setExpiration(new
Date(System.currentTimeMillis() + 3600 * 1000)) // 1 hora
.signWith(SignatureAlgorithm.HS256,
secreto.getBytes())
.compact();
System.out.println("JWT:
" + token);
}
}
Conclusión
- UUID: Simple y rápido para identificadores únicos.
- SecureRandom: Aleatorio seguro, ideal para sesiones o tokens temporales.
- JWT: Estándar para autenticación en APIs y aplicaciones modernas.