Ricevo due JWT: un token OpenID Connect (id_token) e un token di accesso (access_token). La situazione con OpenID è più o meno chiara: posso convalidarla utilizzando l'endpoint JWK: https://smth.com/JWKS.Token processo JWT utilizzando l'endpoint JWK
come nell'esempio (https://bitbucket.org/b_c/jose4j/wiki/JWT%20Examples):
HttpsJwks httpsJkws = new HttpsJwks("https://smth.com/JWKS");
HttpsJwksVerificationKeyResolver httpsJwksKeyResolver = new HttpsJwksVerificationKeyResolver(httpsJkws);
jwtConsumer = new JwtConsumerBuilder()
.setVerificationKeyResolver(httpsJwksKeyResolver)
.setExpectedAudience(...)
.setExpectedIssuer(...)
.build();
La domanda è: come procedere con il token di accesso. Posso estrarre da esso userId e userDetails, ma suppongo di aver bisogno anche di convalidarlo?
Se provo come nel token, sto ricevendo un errore: UnresolvableKeyException: Unable to find a suitable verification key for JWS w/ header {"alg" : "RS256", "kid":"1"}
. E in effetti non esiste una chiave per "kid": "1", anche questo valore "1" sembra abbastanza strano?
Sto facendo qualcosa di totalmente sbagliato?
Qual è il contenuto di https://smth.com/JWKS? smth.com non risolve per me. –
Anche il messaggio di eccezione completo dovrebbe mostrare il contenuto da quell'endpoint JWKS. Senza vedere il JWKS non posso dire esattamente cosa sta succedendo, ma in pratica quello che sta succedendo è che il JWT è stato firmato con RSA e un'intestazione id chiave con valore "1" è stata inclusa, che dovrebbe puntare alla chiave di verifica appropriata nel JWKS (esempio visivo http://www.slideshare.net/briandavidcampbell/i-left-my-jwt-in-san-jose/30). Sembrerebbe che non ci sia una chiave RSA con kid = 1 in quel punto finale JWKS. –
Grazie per la risposta, ho cambiato domanda. Sì, non esiste una chiave per kid = 1, anche il valore '1' sembra strano rispetto a OpenID, dove ottengo qualche bambino vero, come 'dp1kr' e cambia nel tempo. Se hai affrontato questo tipo di autenticazione e puoi darmi un suggerimento - se entrambi i token dovrebbero essere gestiti nello stesso modo o no? –