Tabella dei contenuti
Verifichiamo la correttezza dell'Identificativo utente
L'e-service “Demo - Identificativo utente” pubblicato sul catalogo offre un servizio mediante il quale è possibile verificare la presenza e la correttezza di un determinato id legato a un soggetto.
Il caso d'uso
L'e-service in oggetto mi permette infatti di effettuare questa verifica grazie all'invocazione della seguente API:
1POST /subject-id-verification/check
2
Data preparation
La prima cosa da fare, come abbiamo visto, è la configurazione dei dati. Procediamo dunque alla fase di Data Preparation.
Scambio certificati
L'e-service che desideriamo invocare prevede un ulteriore livello di sicurezza per il quale è prevista una fase di handshake.
Questa fase prevede, in altre parole, lo scambio di un certificato tra fruitore ed erogatore ed è permessa dalla seguente API
1POST /subject-id-verification/data-preparation/handshake
2
Input
Header:
1Authorization: Bearer {{bearerToken}} apikey: {{apikey}}
2
Payload:
1multipart/form-data
2form: 'certificate=@"/myLocation/cert.pem"'
3
Output
Response:
1{
2 "message": "string"
3}
4
Status codes:
- 200 - Certificato salvato con successo
- 400 - Errore formato dati input
Di seguito alcune informazioni sulla creazione del certificato.
Come generare il certificato
Il primo passo da fare è quello di generare un certificato client.
Per farlo puoi utilizzare il tool OpenSSL. Lanciamo il comando per la generazione della chiave privata che nel nostro esempio è a 2048 bit:
1openssl genrsa -out private-key.pem 2048
2
a questo punto possiamo procedere alla creazione del certificato, contenente al suo interno la chiave pubblica (della durata di 365 giorni nell'esempio):
1openssl req -new -x509 -key private-key.pem -out cert.pem -days 365
2
Il certificato è pronto per essere condiviso con l'erogatore nella fase di handshake e successive chiamate.
Inserimento dati
Supponiamo di avere la seguente base dati all'interno della nostra applicazione:
ID | Nome | Cognome | Date fine validità |
---|---|---|---|
RSSMRA80A01H501U | Mario | Rossi | NULL |
LGUBCH80A01H501B | Luigi | Bianchi | NULL |
In accordo a questa effettuiamo la data preparation simulando il seguente scenario:
- L'id RSSMRA80A01H501U è un soggetto ancora valido
- L'id LGUBCH80A01H501B è un soggetto obsoleto e che quindi deve essere rimosso dalla nostra base dati
Replichiamo la configurazione desiderata nel seguente modo:
1POST /subject-id-verification/data-preparation
2
Input
Header:
1Content-Type: application/json
2Content-Encoding: identity
3Authorization: Bearer {{bearerToken}}
4x-correlation-id: {{myUniqueCorrelationId}}
5apikey: {{apikey}}
6
Payload:
1{
2 "idSubject": "RSSMRA80A01H501U"
3}
4
Output
Response:
Status codes:
- 200 - Configurazione salvata con successo
1{
2 "message": "string"
3}
4
- 400 - Errore formato dati input
Ottenimento dei dati
Con questa chiamata è possibile ottenere la lista delle organizzazioni presenti all'interno della base dati.
1GET /subject-id-verification/data-preparation
2
Input
Header:
1Content-Type: application/json
2Content-Encoding: identity
3Authorization: Bearer {{bearerToken}}
4x-correlation-id: {{myUniqueCorrelationId}}
5apikey: {{apikey}}
6
Output
Response:
Status codes:
- 200 - Operazione eseguita con successo
1[
2 {
3 "idSubject": "RSSMRA80A01H501U"
4 }
5]
6
- 400 - Errore formato dati input
1{
2 "detail": "Request took too long to complete.",
3 "instance": "string",
4 "status": 503,
5 "title": "string",
6 "type": "about:blank"
7}
8
Eliminazione dei dati
Con questo end-point è possibile eliminare una specifica organizzazione tramite il suo id dalla base dati.
1POST /subject-id-verification/data-preparation/remove
2
Input
Header:
1Content-Type: application/json
2Content-Encoding: identity
3Authorization: Bearer {{bearerToken}}
4x-correlation-id: {{myUniqueCorrelationId}}
5apikey: {{apikey}}
6
Payload:
1{
2 "idSubject": "RSSMRA80A01H501U"
3}
4
Output
Response:
Status codes:
- 200 - Operazione eseguita con successo
1[
2 {
3 "message": "string"
4 }
5]
6
- 400 - Errore formato dati input
1{
2 "detail": "Request took too long to complete.",
3 "instance": "string",
4 "status": 503,
5 "title": "string",
6 "type": "about:blank"
7}
8
Procediamo a questo punto all'invocazione delle API messe a disposizione dell'e-service.
Invocazione E-Service
Completata la fase di configurazione non resta che procedere all'invocazione del servizio effettuando la verifica per i due soggetti presenti nella mia base dati.
Ripeto dunque la seguente chiamata prima per l'id soggetto di Mario Rossi e dopo per Luigi Bianchi.
1POST /subject-id-verification/check
2
Curl:
curl --location '{host}/subject-id-verification/check'
--cert '/myLocation/cert.pem'
--key '/myLocation/private-key.pem'
--header 'x-correlation-id: myUniqueCorrelationId'
--header 'Content-Encoding: identity'
--header 'apikey: {{apikey}}'
--header 'Content-Type: application/json'
--header 'Authorization: Bearer {{bearerToken}}'
--data '{ "idSubject": "RSSMRA80A01H501U" }'
-k
Output:
Response:
1{
2 "idSubject": "RSSMRA80A01H501U",
3 "valid": true,
4 "message": "Valid id subject"
5}
6
Ciò che otterremo a seguito delle due invocazioni è il seguente risultato:
- Mario Rossi: il soggetto è stato trovato e abbiamo ottenuto una risposta positiva che ci indica la validità dell'id inviato
- Luigi Bianchi: il soggetto non è stato trovato. Il servizio ci ha risposto con successo indicandoci però che l'id soggetto inviato non è più valido
Esito Finale
Dopo aver interrogato l'e-service possiamo procedere all'aggiornamento della nostra base dati in base alle informazioni che abbiamo recuperato.
Di seguito una panoramica della situazione a seguito dell'aggiornamento
ID | Nome | Cognome | Data fine validità |
---|---|---|---|
RSSMRA80A01H501U | Mario | Rossi | NULL |
LGUBCH80A01H501B | Luigi | Bianchi | 01/09/2024 |
La nostra base dati è stata correttamente aggiornata.
Diagramma di Flusso:
.png)
Hai bisogno di aiuto?
Apri un ticket utilizzando l’apposita funzione all’interno della tua Area Riservata