Buen día, comunidad! Escribo ya que tengo una duda muy puntual:
En el curso, el instructor generó este código para generar los JWT:
public String generarToken(Usuario usuario) {
try {
Algorithm algorithm = Algorithm.HMAC256("124567");
return JWT.create()
.withIssuer("voll med")
.withSubject(usuario.getUsername())
.withClaim("id", usuario.getId())
.withExpiresAt(generarFechaDeExpiración())
.sign(algorithm);
} catch (JWTCreationException exception){
throw new RuntimeException();
}
}
private Instant generarFechaDeExpiración() {
return LocalDateTime.now().plusHours(2).toInstant(ZoneOffset.of("-05:00"));
}
Y este otro para verificar el JWT recibido y obtener el subject:
public String getSubject(String token) {
if(token == null) {
throw new RuntimeException();
}
DecodedJWT verifier = null;
try {
Algorithm algorithm = Algorithm.HMAC256("124567"); //Secret
verifier = JWT.require(algorithm)
.withIssuer("voll med")
.build()
.verify(token);
verifier.getSubject();
} catch (JWTVerificationException exception){
System.out.println(exception.toString());
}
if(verifier.getSubject() == null) {
throw new RuntimeException("Verifier inválido");
}
return verifier.getSubject();
}
Mi duda es respecto al método .withIssuer("voll med") usado dentro del bloque try-catch: ¿este método puede omitirse o su uso es forzoso?
Y en caso de ser forzoso, hay algún otro método que deba ejecutarse al momento de estar configurando la autenticación de un API REST "real" (es decir, ya en producción)?