pagopa / pdnd-interop-frontend

Frontend per la piattaforma PDND Interoperabilità
https://docs.pagopa.it/interoperabilita-1/
20 stars 2 forks source link

Kid del fruitore sbagliato su voucher? #630

Closed lucacard closed 10 months ago

lucacard commented 11 months ago

Buongiorno, in fase di erogazione di un eservice, quando arriva una chiamata da un fruitore sulla documentazione si parla di 'verificare la firma del token' andando a chiamare il ws di interop che a partire da un kid ti restituisce la chiave pubblica registrata sul nodo (ws 1.0/keys/:kid e poi parametro n sulla response). Facendo però delle prove, quando l'ente fruitore va a creare un voucher, quel voucher spacchettato non contiene il kid del chiamate ma un'altra chiave. Andando ad usare il ws https://api.uat.interop.pagopa.it/1.0/keys/:kid con questa chiave ricevuta, il ws non trova niente. Facendo la stessa chiamata al ws https://api.uat.interop.pagopa.it/1.0/keys/:kid con la chiave corretta usata dal fruitore per generare il voucher invece il ws risponde correttamente con la chiave pubblica.

  1. Creare un voucher usando il kid X
  2. Effettuare una decodifica base 64 del voucher ottenuto
  3. Dentro al voucher ci sono 2 json che non contengono il kid X del fruitore ma un altro kid Y
  4. Chiamando il ws https://api.uat.interop.pagopa.it/1.0/keys/:kid con il kid Y ottenuto il ws non trova niente
  5. Chiamando il ws https://api.uat.interop.pagopa.it/1.0/keys/:kid con il kid X (quello corretto) il ws risponde correttamente

Come fa l'erogatore a validare la firma se nel voucher non c'è il kid del fruitore ma un altra chiave non riconosciuta dal sistema interop?

Ambiente Collaudo

Dati usati per generare il jwt e reperire il voucher:

image

Voucher generato decodificato che contiene un kid diverso da quello usato dal fruitore per ottenere il voucher

image

FedericaSicchiero commented 10 months ago

Buongiorno, mi scuso per il ritardo nella risposta. Ricevete errore perchè state cercando di recuperare la chiave pubblica di Interoperabilità dalla lista delle chiavi degli enti. La chiave di Interoperabilità si può trovare nel well-known seguendo queste istruzioni qui. Grazie.

lucacard commented 10 months ago

ok, però nella nuova interfaccia sul portale https://selfcare.pagopa.it/ non vedo piu il link per scaricare il well-known che nella vecchia interfaccia era invece presente.

FedericaSicchiero commented 10 months ago

Avete ragione, al momento per un redesign non c'è il link diretto ma stiamo lavorando per rimetterlo. Il link al well-known è https://interop.pagopa.it/.well-known/jwks.json

lucacard commented 10 months ago

ok perfetto grazie, questo sarebbe in produzione? perchè il kid che ricevo in collaudo inizia per 32d8a.. mentre il kid a quel link è 199d08d2-9971-4979-a78d-e6f7a544f296

FedericaSicchiero commented 10 months ago

Si esatto è quello di prod, quello di collaudo è https://uat.interop.pagopa.it/.well-known/jwks.json

lucacard commented 10 months ago

ok grazie

sandrocianfarani commented 8 months ago

Salve Luca, perdonami se chiedo aiuto qui, ma non riesco a capire come effettuare la verifica della firma del token. Io mi trovo in produzione, ma una volta ottenuto il KID con la chiamata https://api.interop.pagopa.it/1.0/keys/:kid, e ottenuto la chiave sul parametro "n" del JSON di risposta, non riesco a proseguire. Io sviluppo in PHP; avresti cortesemente un esempio da fornire sul tipo di istruzioni che utilizzi per effettuare tale verifica? Grazie