Saltar al contenido

¿Cómo valido un token jwt que obtuve de Cognito?

Solución:

Spring Security 5.1 introdujo soporte para esto, por lo que es mucho más fácil de implementar. Ver https://docs.spring.io/spring-security/site/docs/current/reference/html/jc.html#oauth2resourceserver

Básicamente:

  1. Agregue dependencias como se describe en https://docs.spring.io/spring-security/site/docs/current/reference/html/jc.html#dependencies
  2. Agregue la configuración de yml como se describe en https://docs.spring.io/spring-security/site/docs/current/reference/html5/#oauth2resourceserver-jwt-minimalconfiguration. Para cognito use la siguiente URL: https://cognito-idp.<region>.amazonaws.com/<YOUR_USER_POOL_ID>
  3. Probablemente necesite editar su configuración de seguridad como se describe en https://docs.spring.io/spring-security/site/docs/current/reference/html/jc.html#oauth2resourceserver-sansboot

Usa una biblioteca como java-jwt (Supongo que estás usando Maven)

<dependency>
    <groupId>com.auth0</groupId>
    <artifactId>java-jwt</artifactId>
    <version>3.3.0</version>
</dependency>

Luego:

String token = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXUyJ9.eyJpc3MiOiJhdXRoMCJ9.AbIJTDMFc7yUa5MhvcP03nJPyCPzZtQcGEp-zWfOkEE";
try {
    Algorithm algorithm = Algorithm.HMAC256("secret");
    // or
    Algorithm algorithm = Algorithm.RSA256(publicKey, privateKey);
    JWTVerifier verifier = JWT.require(algorithm)
        .withIssuer("auth0")
        .build(); //Reusable verifier instance
    DecodedJWT jwt = verifier.verify(token);
} catch (UnsupportedEncodingException exception){
    //UTF-8 encoding not supported
} catch (JWTVerificationException exception){
    //Invalid signature/claims
}

Puede decodificar manualmente un jwt-token aquí: https://jwt.io

Más información sobre java-jwt aquí: https://github.com/auth0/java-jwt

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *