pagopa / pdnd-interop-frontend

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

JWS informazioni complementari - Agid-JWT-TrackingEvidence #633

Closed AlessandroCimarelli closed 11 months ago

AlessandroCimarelli commented 11 months ago

Ciao, stiamo cercando di implementare l'utilizzo del JWS informazioni complementari seguendo le linee guida presenti nel link https://docs.pagopa.it/interoperabilita-1/manuale-operativo/utilizzare-i-voucher, nei punti 2 e 3 del flusso in dettaglio.

Nelle specifiche si descrive che all'interno del payload del jwt utilizzato per la client credential e lo stacco del voucher si devono inserire i seguenti attributi:

"digest": { "alg": "SHA256", "value": "76do5sKxr7ncAIDXYJ50mNJb+y1uLRuC//m+1JU4o68=" }

però la pdnd ci da il seguente errore:

400 - {"correlationId":"a0d93a72-fc6e-45aa-8b1a-6558f66a112b","errors":[{"code":"015-0008","detail":"Unable to generate a token for the given request"}],"status":400,"title":"The request contains bad syntax or cannot be fulfilled.","type":"about:blank"}

l'hash del jws informazioni complementari è stato creato con SHA256 e inserito nel value.

Non capiamo dove possa essere l'errore, abbiamo controllato il jws client credential e sembra corretto.

se eliminiamo la nuova parte, il voucher ci viene restituito correttamente, ma il servizio richiesto va in errore.

Al servizio richiesto passiamo nell'header Agid-JWT-TrackingEvidence con valorizzato il jws firmato con la nostra chiave privata, e il kid all'interno del header.

di seguito le informazioni per il debug.

Step di auto-debug Prima di aprire un issue, puoi effettuare le seguenti verifiche per escludere un errore di configurazione:

  1. Se stai richiedendo un voucher per un e-service, il purposeId inserito è quello corretto? SI

  2. il client_id inserito nella richiesta al server autorizzativo corrisponde al valore inserito come subject (campo SUB) nella client assertion? SI

  3. la chiave privata con la quale è stata firmata la client assertion corrisponde alla pubblica (campo KID) depositata su PDND Interoperabilità? SI

  4. la chiave con la quale firmi l'asserzione (campo KID) è inserita all'interno del client che hai indicato (campo SUB)?SI

Il codice IPA del tuo ente INAIL

Data e ora del tentativo 06/11/2023 14:15:00

Ambiente Collaudo

client_id a75043f0-c478-420c-84bd-194ecedb45e8

correlationId

purposeId (solo per i client e-service) db2cd49d-e843-4a57-b7a1-8e5082060089

FedericaSicchiero commented 11 months ago

Buon pomeriggio, l'errore è dato dalla codificazione in base64 il valore dell’hash nel campo digest.value. In quel campo è sufficiente inserire l’hash ottenuto applicando SHA256 al JWT Agid-JWT-TrackingEvidence. Se la documentazione non è abbastanza chiara vediamo di sistemarla, grazie della segnalazione.

AlessandroCimarelli commented 11 months ago

giusto per essere sicuro, nel campo digest.value va solo l'hash in SHA256?

non mi sembra che abbia fatto anche il base64, ma controllo.

grazie

AlessandroCimarelli commented 11 months ago

ciao, ho risolto il problema, e ora il voucher viene staccato correttemente.

Ho una domanda per il JWS JWT Agid-JWT-TrackingEvidence che riguarda l'aud che deve essere inserito all'interno.

In questo JWS l'aud deve essere la url che viene richiamata del servizio o aud configurato sulla console della PDND nelle specifiche del servizio?

Questa è un punto non chiaro nella documentazione Grazie in anticipo Alessandro

AlessandroCimarelli commented 11 months ago

Abbiamo risolto.

grazie