11package io .scalecube .security .jwt ;
22
3- import com .auth0 .jwt .JWT ;
4- import com .auth0 .jwt .algorithms .Algorithm ;
5- import java .security .interfaces .RSAPublicKey ;
3+ import io .jsonwebtoken .Claims ;
4+ import io .jsonwebtoken .Jwt ;
5+ import io .jsonwebtoken .Jwts ;
6+ import io .jsonwebtoken .LocatorAdapter ;
7+ import io .jsonwebtoken .ProtectedHeader ;
8+ import java .security .Key ;
69import java .util .concurrent .CompletableFuture ;
710import org .slf4j .Logger ;
811import org .slf4j .LoggerFactory ;
@@ -25,12 +28,28 @@ public JwksTokenResolver(JwksKeyProvider keyProvider) {
2528 public CompletableFuture <JwtToken > resolveToken (String token ) {
2629 return CompletableFuture .supplyAsync (
2730 () -> {
28- final var rawToken = JWT .decode (token );
29- final var kid = rawToken .getKeyId ();
30- final var publicKey = (RSAPublicKey ) keyProvider .getKey (kid );
31- final var verifier = JWT .require (Algorithm .RSA256 (publicKey , null )).build ();
32- verifier .verify (token );
33- return JwtToken .parseToken (token );
31+ final Jwt <?, ?> parse =
32+ Jwts .parser ()
33+ .keyLocator (
34+ new LocatorAdapter <>() {
35+ @ Override
36+ protected Key locate (ProtectedHeader header ) {
37+ final var keyId = header .getKeyId ();
38+ return keyProvider .getKey (keyId );
39+ }
40+ })
41+ .build ()
42+ .parse (token );
43+
44+ parse .getHeader ();
45+
46+ // final var rawToken = JWT.decode(token);
47+ // final var kid = rawToken.getKeyId();
48+ // final var publicKey = (RSAPublicKey) keyProvider.getKey(kid);
49+ // final var verifier = JWT.require(Algorithm.RSA256(publicKey, null)).build();
50+ // verifier.verify(token);
51+
52+ return new JwtToken (parse .getHeader (), (Claims ) parse .getPayload ());
3453 })
3554 .handle (
3655 (jwtToken , ex ) -> {
0 commit comments