Esempio con GovWay
Esempio dettagliato di una integrazione di un modulo di Opencity Italia che attinge a una API protetta mediante l'API gateway opensource GovWay di Link.it
Last updated
Was this helpful?
Esempio dettagliato di una integrazione di un modulo di Opencity Italia che attinge a una API protetta mediante l'API gateway opensource GovWay di Link.it
Last updated
Was this helpful?
API privata, che si intende esporre mediante GovWay:
L'API risponde un dato privato se viene correttamente inserito un parametro in get tax_code che identifica il codice fiscale del cittadino che esegue la richiesta:
L'API non ha un controllo interno che permette di rispondere ad ogni cittadino solo con i suoi dati, l'API è aperta e risponde a qualunque chiamata.
In questo esempio si desidera esporre l'API privata su un indirizzo pubblico e filtrare le chiamate in modo che ogni cittadino possa consultare l'API solo per i propri dati.
L'API esposta è la seguente:
Quando viene chiamata quest'ultima url si desidera imporre un controllo sulla la presenza del token JWT e sul parametro della chiamta. La chiamata deve raggiungere l'API privata SOLO se:
il token è presente
il token è validato mediante la chiave pubblica esposta in
viene passato il parametro tax_code
in GET
il parametro tax_code corrisponde al valore username
del token
Quest'ultimo punto è il più importante perché ci da la certezza che il cittadino che sta facendo la richiesta è lo stesso che si è autenticato.
E' necessario creare una token policy, che poi verrà assegnata all'erogazione delle API
Fare attenzione inoltre che il kid
della chiave pubblica è specifico per ogni tenant e deve essere quello corretto.
Predisposta la policy deve essere applicata all'Erogazione API
Il controllo del contenuto viene fatto imponendo che l'informazione riportata nel token (${tokenInfo:username}
) e quella inserita come parametro GET della chiamata (${query:filter[tax_code]}
) abbiano lo stesso valore. Resta inteso che il valore nel token è vincolato dalla piattaforma, mentre il parametro tax_code
è scelto da chi ha progettato l'API che viene protetta.
A questo punto la configurazione è completa.
Il file jwks è stato scaricato da e inserito in un path raggiungibile da GovWay: nel nostro caso essendo GovWay installato con Docker abbiamo fatto uso della direttiva volumes
per condividere il file con il container di GovWay.