link-it / govway

API Gateway per la Pubblica Amministrazione italiana
https://govway.org
GNU General Public License v3.0
53 stars 10 forks source link

Verifica KID su PDND per AUDIT-02 e INTEGRITY-02 #144

Closed AlessandroCimarelli closed 9 months ago

AlessandroCimarelli commented 9 months ago

Ciao, stiamo testando la verifica dei jws pdnd per un servizio in erogazione.

Nella configurazione l'api abbiamo messo AUTH-02, INTEGRITY-02 E AUDIT-02

Abbiamo creato un applicazione con le informazioni del BE interno, come server, poi creata l'erogazione dove abbiamo selezione l'api precentemente creata e associata all'applicazione.

Facendo il test con postman e passando i tre JWS (authorization, agid-jwt-signature e agid-jwt-trackingevidence). oltre agli header richiesti, il GovWay autorizza la richiesta che arriva al BE.

La cosa strana che riscontro è che non vedo la richiesta verso il servizio rest della pdnd dove viene passato il kid, per controllarlo.

Ho configurato il servizio api-pdnd con le informazioni corrette (client_id, kid etc.) però non vedo richieste di nessun tipo.

In che punto si definisce l'utilizzo del kid dei jws di richiesta per poi essere verificato?

Ho anche messo burp come proxy del govway, così da vedere tutte le richieste, per quella verso la pdnd non è visibile.

Ho messo anche i log a ALL così da avere anche li un dettaglio, ma non risulta nulla.

Mi aspetterei che a fronte di una richiesta al servizio di erogazione, poi ci fosse una richiesta verso il servizio api-pdnd.

Ci puoi aiutare a capire questa configurazione?

Grazie Alessandro

andreapoli commented 9 months ago

Buonasera @AlessandroCimarelli, che tipo di configurazione è stata configurata nella sezione 'ModI - Richiesta' dell'erogazione per quanto concerne il truststore dei certificati?

Per attivare una configurazione dinamica in cui GovWay effettuerà lo scaricamento della chiave pubblica attraverso le API PDND deve essere configurato un truststore dei certificati di tipo PDND come mostrato nella figura. L'invocazione delle api-pdnd avverrà solamente se l’identificativo kid della chiave non è già presente nella cache locale.

Molto probabilmente se non rilevi le chiamate o la chiave è già nella cache locale di GovWay (dovresti però trovare traccia nello storico delle transazioni di almeno una chiamata) o hai configurato un truststore di tipo differente che consente di validare il token.

AlessandroCimarelli commented 9 months ago

Ciao, le configurazioni sono quelle indicate, quindi il "problema" è che è in cache la richiesta.

Grazie Alessandro

AlessandroCimarelli commented 9 months ago

Ciao, ho fatto un test questa mattina, avendo una vm ho fatto il riavvio del server, quindi mi aspetterei che tutte le cache siano state pulite, però continuo a non vedere la richiesta verso api-pdnd

Allego gli screenshoot delle configurazioni.

Schermata del 2023-11-21 08-07-37

Schermata del 2023-11-21 08-07-58 Schermata del 2023-11-21 08-08-31

grazie Alessandro

andreapoli commented 9 months ago

Buongiorno @AlessandroCimarelli, si tratta di una cache a più livelli in cui le chiavi e le informazioni ottenute sui clientId vengono mantenute sia su ram che su database (tabella 'remote_store_key').

Riavviando il nodo persistono le informazioni presenti su database che hanno parametri di scadenza configurabili come descritto nella documentazione sulle [API PDND] (https://govway.org/documentazione/console/profiloModIPA/messaggio/passiPreliminari/apiPDND.html) (vedi maxLifeMinutes) con valori di default alti visto che le informazioni memorizzate non dovrebbero cambiare su PDND poichè il cambio di una chiave comporta la variazione del kid. Per forzare una nuova chiamata dovresti eliminare l'entry nella tabella e svuotare le cache (o riavviare il nodo).

È stata aggiunta una nuova funzionalità nel commit 390d237, che sarà disponibile nella prossima versione, che consentirà tramite la console di gestione di prendere visione e/o eliminare le chiavi presenti in questa cache come descritto nella documentazione della versione master su read the docs per quanto riguarda la Cache PDND.

AlessandroCimarelli commented 9 months ago

Perfetto, ho diminuto il tempo della cache nel file ed ora vedo le richieste.

Ottima la nuova funzionalità.

Grazie Alessandro