Tabella dei contenuti
E-service con funzionalità "portachiavi"
L'e-service “Attestazione - Demo Portachiavi” pubblicato sul catalogo offre un servizio mediante il quale è possibile vedere in azione la funzione del portachiavi.
Invocazione dell'e-service
Dopo aver fatto la sottoscrizione al servizio in oggetto possiamo subito procedere alla generazione del Voucher e quindi all'invocazione delle API.
La prima chiamata che andremo a effettuare è la seguente:
1GET /keychain-mock/signature
2
Input
Header:
1Content-Type: application/json
2Authorization: Bearer {{bearerToken}}
3x-correlation-id: {{myUniqueCorrelationId}}
4
Output
Header:
1x-payload-signature: {{signature}}
2x-payload-signature-kid: {{kid}}
3x-payload-signature-algorythm: SHA256withRSA
4
Payload:
1{
2 "message": "risposta generata con successo"
3}
4
Come si evince dall'output ottenuto, l'erogatore invia in risposta non solo il body della response, ma anche degli header aggiuntivi calcolati sulla base della chiave pubblica collegata al portachiavi.
Il fruitore che riceve gli header aggiunti ha la possibilità di effettuare la verifica di integrità della risposta.
Di seguito viene fornito un esempio degli step che è possibile effettuare per la verifica.
Recupero della chiave pubblica legata al portachiavi
Mediante il valore contenuto all'interno dell'header x-payload-signature-kid è possibile procedere al recupero della chiave pubblica.
A tal proposito è possibile invocare le API messe a disposizione da interoperabilità e nello specifico
1GET /keys/:kid
2
Valorizzando il parametro :kid con il valore ottenuto nell'header.
L'API risponderà con la chiave pubblica associata.
Verifica della signature
Grazie alla chiave pubblica recuperata e ai restanti header è possibile procedere con la verifica.
Per la verifica è necessario recuperare il valore associato a x-payload-signature e applicare l'algoritmo indicato in x-payload-signature-algorythm sulla signature.
Di seguito uno stralcio di codice solo a titolo esplicativo
1# Carica la chiave pubblica
2public_key = load_pem_public_key(public_key_pem)
3
4# Verifica la firma
5try:
6 public_key.verify(
7 signature,
8 payload,
9 padding.PKCS1v15(),
10 hashes.SHA256()
11 )
12 print("Firma valida!")
13except Exception as e:
14 print("Firma non valida:", e)
15
Se l'algoritmo viene correttamente eseguito, la verifica di integrità è corretta.
Invio feedback
L'e-service espone un'ulteriore API che permette di inviare verso l'erogatore il feedback a seguito della verifica della signature.
A tal proposito il fruitore potrà inviare i dettagli effettuando la seguente richiesta:
1POST /keychain-mock/verify
2
Input
Header:
1Content-Type: application/json
2Authorization: Bearer {{bearerToken}}
3x-correlation-id: {{myUniqueCorrelationId}}
4x-payload-signature: {{signature}}
5
Payload:
1{
2 "message": "Check Successful"
3}
4
Output
Payload:
1{
2 "status": "OK",
3 "message": "X-Payload-Signature verificata"
4}
5
In questo modo l'erogatore recepisce che il flusso di chiamate è stato concluso correttamente.
Hai bisogno di aiuto?
Apri un ticket utilizzando l’apposita funzione all’interno della tua Area Riservata