PDND Erogatore

Buongiorno,

stiamo approcciando la PDND come erogatori di servizi.
Mi chiedevo se esistono già librerie di validazione dei voucher, magari in Java e se c’è uno strumento di test/collaudo evoluto come quello di SPID ad esempio.

Inoltre, qualcuno che ha già affrontato il problema, da quale documento è partito per l’implementazione dei controlli da fare lato erogatore?

Buongiorno Luca,

data la complessità dell’operazione, noi stiamo utilizzando un API gateway dedicato per poter erogare i servizi tramite PDND, che si occupa (tra le altre cose) della validazione del voucher in maniera autonoma.

Nello specifico stiamo effettuando delle prove con GovWay di Link.it srl; se proprio vuoi provare a sviluppare una soluzione autonomamente, posso consigliarti di trarre ispirazione dal loro sorgente GitHub - link-it/govway: API Gateway per la Pubblica Amministrazione italiana (rilasciato in GPL3)

1 Mi Piace

Ti ringrazio, lo avevo visto perché ovviamente mi sembrava la cosa migliore, solo che per ora il cliente vuole una cosa molto più semplice, a tendere però lo vorrei valutare, come vi trovate? Funziona?

Partire dal loro codice la vedo poco fattibile, nel senso…penso che cercare sul loro codice sia un più complesso che rifarlo :smiley:

Sarebbe molto utile che chi ha competenze specifiche tentasse di spiegare cosa serve per essere erogatori di API appoggiandosi all’universo PDND, nei vari scenari possibili.
Magari facendo riferimento alla realtà dei comuni, sia dal punto di vista della tipologia di dati da esporre/ricevere sia dal punto di vista di articolazione e gestione del sistema informativo.

Per esempio…
Parlate di API gateway: la strada e’ mettere un gateway in mezzo che raccoglie le richieste, va a recuperare (o scrivere) i dati in giro per i DB dell’ente e fornisce la risposta? In tal caso, quali sono i requisiti dei DB/fonti di dati? Quali gli aspetti gestionali da tenere in conto? Nei comuni i DB sono spesso ben separati fra loro e magari sotto la responsabilità di soggetti diversi (i fornitori dei vari software).
Oppure si puo’ pensare che ogni software di settore aggiunga una componente di server API che resta in ascolto?

Dunque, la questione è questa: esporre un servizio sulla PDND, da quel che ho potuto leggere, non è diverso dall’esporre un semplice servizio, tecnicamente parlando.
Se capisco bene basta esporre un semplice servizio REST, con qualche vincolo sui payload ma niente di che immagino.
L’unica cosa che cambia è il livello autorizzativo, l’autenticazione avviene sulla PDND e il servizio deve solo verificare l’autorizzazione, verificare che il token sia valido.
A questo si aggiunge, opzionalmente, una eventuale chiamata all’infrastruttura di PDND per recuperare info sul chiamante che non sono presenti nel token, non è obbligatorio, ma se hai bisogno di fare autorizzazione a livelli un po’ più granulari, potrebbe servirti.

Detto ciò, questi meccanismi non sono diversi dai normali meccanismi che fanno uso di OpenID ad esempio.
Risulta quindi comodo avere un API GW, in modo da demandare a lui l’autorizzazione ed esporre servizi semplici, che non devono ogni volta reimplementare l’acqua calda (verifica del token) ma anche per andare ad esporre magari servizi già esistenti, senza modificarli perché tanto al layer autorizzativo pensa l’API GW.

In definitiva è tutto abbastanza semplice, solo che spesso mancano le risorse, per sviluppare un servizio per PDND il semplice sviluppatore, se avesse un paio di librerie fornite, potrebbe impiegare a mio avviso non più di mezz’ora a trasformare un servizio in un servizio PDND (ok, faccio qualche semplificazione) allo stesso modo in cui un servizio può servire una SPA se messo dietro ad un API GW che si occupa di fare l’autorizzazione e/o l’autenticazione.

Resta fuori il discorso di reperire le info dai vari db etc etc, che è un discorso molto legato all’ente, al tipo di dati, privacy e quant’altro.
Comunque sia, un API GW un po’ più evoluto potrebbe anche fare mediazione per esporre i dati, volendo.

A mio avviso, come spesso accade, mancano librerie, ambienti di sviluppo, framework e chi più ne ha…più ne condivida per favore :smiley:

1 Mi Piace

Non c’è nessuno quindi che ha scritto qualcosa per fare la validazione del token?
Ma qualcuno sta veramente erogando con PDND? :slight_smile:

scusate mi ero perso il resto della conversazione…

l’analisi fatta da @lucav1 è corretta, il gateway serve principalmente a:

  • evitare di dover inserire i meccanismi di convalida voucher dentro tutti i servizi esposti
  • poter fare politiche di rate limiting ad un livello superiore
  • poter esporre in modo sicuro API interne non pubblicate

Se non si vuole/può usare un gateway l’alternativa è validare il token JWT/JWS ad ogni chiamata di ogni servizio; il processo non è complesso ed è dettagliato nel manuale operativo: Utilizzare i voucher - PDND Interoperabilità
In breve è necessario:

  1. deserializzare il token
  2. verificare le intestazioni e il payload (token non scaduto, issuer, audience,…)
  3. verificare che sia stato firmato con una delle firme well-known di PDND
  4. (OPZIONALE) effettuare ulteriori verifiche tramite opportune chiamate alle API interop per ottenere dati aggiuntivi (dati sul client, sulla richiesta di fruizione,…)
1 Mi Piace