Tabella dei contenuti
Come verificare una risposta firmata da un erogatore
Il ModI lascia discrezione all'erogatore nell'indicare qual debba essere la procedura corretta di firma del payload e verifica da parte del fruitore. 
Si riporta comunque a titolo di esempio una possibile gestione del meccanismo di firma del payload di risposta di un e-service.
Per maggiori informazioni, si veda la sezione dedicata.
Quando un fruitore riceve una risposta firmata dall'erogatore, può verificare l’autenticità e l’integrità dei dati ricevuti nella risposta attraverso il kid (id della chiave) inserito nel payload, e la chiave pubblica che l'erogatore ha depositato sul proprio Portachiavi erogatore, associato all'e-service.
Step 1: Deserializzazione della risposta
Una volta deserializzato il payload creato dall'erogatore nel tutorial dedicato, il fruitore troverà la risposta JSON che l'erogatore ha inviato, strutturata come segue:
1{
2  "data": {
3    "campo1": "valore1",
4    "campo2": "valore2"
5  },
6  "signature": "<firma_rsa_in_base64>",
7  "kid": "<id_chiave_pubblica>"
8}
9
10| Nome campo | Significato | 
|---|---|
| data | contiene il payload, ossia i dati effettivi che l'e-service trasmette verso i fruitori | 
| signature | contiene la firma digitale del campo data, calcolata dall'e-service utilizzando una chiave privata RSA (appartenente ad un portachiavi all'e-service) e codificata in formato base64 | 
| kid | identificatore della chiave usata per la firma; consente al fruitore di sapere quale chiave pubblica utilizzare per verificare la firma | 
Si passa quindi alla verifica della firma.
Step 2: Individuazione della chiave pubblica
La chiave corrispondente al kid è reperibile sulle API esposte da PDND Interoperabilità.
Per ottenere la chiave da PDND Interoperabilità, il fruitore deve aver:
- creato un client di tipo API Interop (vedi tutorial);
 - generato almeno un set di materiale crittografico e caricato la relativa chiave pubblica su PDND Interoperabilità all'interno del client (vedi tutorial)
 - aver ottenuto un voucher valido per le API di PDND Interoperabilità (vedi tutorial).
 
Il fruitore la troverà al path GET /keys/{kid}  in formato JWK.
Step 3: Ricalcolo dell'hash
 Il fruitore calcola l’hash del contenuto di data usando lo stesso algoritmo utilizzato dell'erogatore SHA256.
Step 4: Verifica della firma
Con la chiave pubblica ottenuta allo step 2, il fruitore verifica che la firma (campo signature) corrisponda all’hash calcolato nello step 3. Se i due valori corrispondono, il payload è autentico e integro; in caso contrario, potrebbe essere stato alterato o non provenire dall'e-service ed è possibile contattare l'erogatore per maggiori informazioni.
Pagina successiva → Tutorial generali
Hai bisogno di aiuto?
Apri un ticket utilizzando l’apposita funzione all’interno della tua Area Riservata