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:
- Agregue dependencias como se describe en https://docs.spring.io/spring-security/site/docs/current/reference/html/jc.html#dependencies
- 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>
- 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)