Skip to content

GovWay v3.1.0

Compare
Choose a tag to compare
@andreapoli andreapoli released this 14 Jun 16:57
· 1640 commits to master since this release

Nuove API di Gestione e Monitoraggio

Sono ora disponibili API REST per la gestione ed il monitoraggio di GovWay, utilizzabili in alternativa alle due console ('govwayConsole' e 'govwayMonitor').

Nuova funzionalità di Trasformazione dei Messaggi

Aggiunta la funzionalità di trasformazione dei messaggi in transito, sia per la richiesta che per la risposta, su vari aspetti quali:

  • Trasformazione di Protocollo: è possibile effettuare trasformazioni di protocollo da SOAP a REST o viceversa, permettendo anche di fruire o erogare lo stesso servizio in entrambe le modalità.
  • Header HTTP e Parametri della URL: è possibile aggiungerne di nuovi oppure modificare o eliminare quelli esistenti. I valori forniti possono essere statici o possono contenere parti dinamiche risolte a runtime dal Gateway.
  • Payload HTTP: la funzionalità consente di modificare il payload della richiesta e/o della risposta. È possibile indicare la generazione di un payload vuoto o fornire un nuovo payload definito tramite una delle seguenti modalità:
    • GovWay Template: file contenente parti dinamiche risolte a runtime in maniera analoga agli header http e ai parametri della url.
    • Freemarker Template: template dinamico che può utilizzare i costrutti supportati da 'Freemarker' ( https://freemarker.apache.org/ ).
    • Velocity Template: template dinamico che può utilizzare i costrutti supportati da 'Velocity' ( http://velocity.apache.org/ ).
    • XSLT: fogli di stile XSLT utilizzabili su messaggi di tipo XML o SOAP.
  • Codice di Risposta: è possibile personalizzare il codice di risposta in funzione di condizioni valutate a runtime dal Gateway.

Nuova funzionalità di Negoziazione Token

Aggiunta la funzionalità di negoziazione di Bearer Token da inoltrare verso gli endpoint definiti nei connettori.

All'interno di Token Policy, funzionali alla negoziazione di un access token, vengono definiti tutti i parametri necessari per l'accesso all'Authorization Server, tra cui il flusso oauth selezionabile tra 'Client Credentials Grant' o 'Resource Owner Password Credentials Grant'.
La policy, una volta definita, deve essere associata ad un connettore per attivarla. La rinegoziazione del token avviene automaticamente una volta che il token è scaduto.

Miglioramenti alla funzionalità di RateLimiting

La gestione delle politiche di 'Rate Limiting' è stata semplificata, introducendo la distinzione tra due diverse modalità di registrazione:

  • Basata su Criteri: permette di indicare direttamente i criteri che la politica deve garantire; tra i criteri utilizzabili:
    la metrica (numero richieste, occupazione banda, tempi medi, ....), l'intervallo temporale (minuto, ora, giorno) e le condizioni di applicabilità (congestione, degrado prestazionale).
  • Basata su Policy Utente: permette di utilizzare una politica arbitraria, precedentemente definita dall'utente.

È stato rivisto l'algoritmo di valutazione delle politiche di rate limiting, come segue:

  • le policy vengono raggruppate "per metrica" e per ogni metrica vengono valutate nell'ordine di inserimento, per cui è ora possibile modificare la posizione della policy;
  • per ogni metrica vengono valutate le policy applicabili, cioè per le quali risultano soddisfatti il filtro e le condizioni di applicabilità;
  • se la policy viola i livelli di soglia previsti, la transazione viene bloccata (o segnalata se configurata come "warning only") e la valutazione delle policy viene terminata;
  • se la policy non viola invece i livelli di soglia previsti, si prosegue nella valutazione di ulteriori policy per quella metrica, solo se la policy è marcata come "prosegui".

Infine sono state riviste le maschere per la gestione dei valori di soglia e per i criteri di applicabilità.

Nuova modalità di gestione delle Credenziali SSL

Introdotta la possibilità di registrare le credenziali 'ssl' di applicativi e soggetti anche tramite upload del corrispondente certificato (formati DER, PEM, PKCS12, JKS).

La verifica dei certificati client viene ora effettuata confrontando non solamente il Subject ma anche l’Issuer. Inoltre è possibile configurare opzionalmente la verifica anche degli altri campi del certificato tra cui il serial number.

La nuova modalità di gestione dei certificati risolve anche i seguenti problemi:

  • I certificati che contengono molteplici campi 'OU' vengono adesso gestiti correttamente.
  • È possibile salvare anche i certificati che possiedono un subject con lunghezza superiore ai 255 caratteri.
  • Corretta la gestione dei certificati in presenza di caratteri speciali.

Miglioramenti alla funzionalità di Caching della Risposta

Sono state introdotte le seguenti nuove funzionalità:

  • Digest: aggiunta la possibilà di indicare quali header (per default nessuno) e quali parametri della url (per default tutti) concorrano alla generazione del digest .
  • Cache-Control: aggiunta la gestione dell'header http 'Cache-Control' per quanto concerne le direttive 'no-cache', 'no-store' e 'max-age'. Su ogni erogazione o fruizione di API è possibile disabilitare la gestione di qualcuna o di tutte le direttive.
  • Caching attivabile in funzione della Risposta: la funzionalità di caching delle risposte è ora attivabile in funzione del return code http e del tipo di risposta ottenuta (fault).

Miglioramenti alla funzionalità di Autenticazione

Nella sezione 'Controllo degli Accessi' di una erogazione o fruizione di API sono ora disponibili nuove modalità di accesso all'identità del client per l'autenticazione di tipo "principal":

  • Container: rappresenta l'unica modalità presente nelle precedenti versioni di GovWay.
  • Header HTTP: il principal viene letto da un header http il cui nome viene indicato nella configurazione dell'erogazione o fruizione. La configurazione permette inoltre di indicare se l'header vada consumato dopo il processo di autenticazione o invece inoltrato.
  • Parametri della URL: il principal viene letto da un parametro della url di invocazione il cui nome viene indicato nella configurazione dell'erogazione o fruizione. La configurazione permette inoltre di indicare se l'header vada consumato dopo il processo di autenticazione o invece inoltrato.
  • Indirizzo IP: come principal viene utilizzato l'indirizzo IP del mittente.
  • Token: il principal viene letto da uno dei claim presenti nel token.

Per quanto concerne invece l'autenticazione di tipo 'http-basic' è stata aggiunta la possibilità di configurare se l'header http 'Authorization' vada consumato dopo il processo di autenticazione o invece inoltrato.

Miglioramenti alla funzionalità di Sicurezza Messaggio

Sono state introdotte le seguenti nuove funzionalità riguardanti la sicurezza dei messaggi JSON:

  • JSON Web Signature - Unencoded Payload Option: aggiunto il supporto per generare un JWS con il payload non codificato come descritto nel RFC 7797 (https://tools.ietf.org/html/rfc7797).
  • JSON Web Signature - Compact Detach: aggiunto il supporto per generare un JWS con serializzazione 'Compact' in modalità 'Detach' come descritto nell'Appendice F del RFC 7515 (https://tools.ietf.org/html/rfc7515#appendix-F).
  • JWT Header per informazione sul certificato: aggiunto supporto per la gestione degli header 'x5c','x5u','jwk', 'jku' sia per la Signature che per l'Encrypt.
  • JWT Header per custom e critical claim: aggiunta possibilità di generare header custom e critical sia per la Signature che per l'Encrypt.
  • JWKSet: aggiunta gestione dei keystore di tipo 'jwk'.

Miglioramenti alla Console di Gestione

Sono state introdotte le seguenti nuove funzionalità:

  • Connettività dei connettori: è possibile verificare la connettività dei connettori http/https configurati. In caso di configurazione in cluster su più nodi, la connettività è verificabile sia sul singolo nodo che su tutti.
  • Restyling grafico della configurazione di una API: migliorata la gestione delle informazioni relative alle funzionalità attive su una API (es. Controllo Accessi, Validazione ...) e alla suddivisione delle risorse in gruppi differenti.
  • Connettore di Default: durante la creazione di una erogazione o di una fruizione, se è stata caricata un'interfaccia (OpenAPI, WSDL, WADL ...) che definisce un connettore, questo viene proposto come connettore di default da utilizzare.
  • CORS: aggiunta possibilità di registrare gli 'expose headers' tramite la modalità standard della console.
  • Informazioni: sugli elementi relativi a funzionalità complesse (es. Correlazione Applicativa, Trasformazione, Connettore di tipo 'file' ...) è stata introdotta la presenza di un elemento 'info' che consente di ottenere maggiori informazioni.
  • Tempi di attesa durante la navigazione: è stata ottimizzata l'acquisizione delle informazioni relative alle API sulle varie maschere della console, rendendo la navigazione sulle varie sezioni più veloce.
  • Selezione applicativo con differenti utenze: risolto problema che non consentiva l'aggiunta di un applicativo o soggetto tra la lista degli autorizzati se alla console ci si collegava con una utenza differente da quella utilizzata per creare l'applicativo o il soggetto.

Miglioramenti alla Console di Monitoraggio

Sono state introdotte le seguenti nuove funzionalità:

  • Filtri di Ricerca: effettuata riorganizzazione degli elementi presenti nel filtro di ricerca delle transazioni e di generazione delle statistiche.
  • Storico delle Transazioni: le informazioni relative al Mittente (Soggetto e Applicativo) ed all'API (Nome, Versione, Soggetto Erogatore) sono state raggruppate per fornire una consultazione più immediata ed in linea con la riorganizzazione dei filtri di ricerca.
  • Distribuzione per Esito [#37]: nel report visualizzato dopo aver effettuato il login, la legenda riportava un'ora errata (+1 rispetto all'ora corrente) per il periodo 'Ultime 24 Ore'. Il problema è stato risolto.

Miglioramenti al profilo di Fatturazione Elettronica

Sono state realizzate le seguenti nuove funzionalità al profilo di Fatturazione Elettronica:

  • [#27] Nella Fatturazione Passiva è stata aggiunta alla traccia delle notifiche ricevute l'informazione sul Codice Destinatario della Fattura. Tale informazione è utile per smistare le fatture e notifiche ricevute per Codice Destinatario.
  • [#27] Nella Fatturazione Attiva è stata aggiunta alla traccia delle notifiche ricevute l'informazione sull'IdTrasmittente (IdPaese + IdCodice) e l'identificativo dell'Applicativo che ha inviato la fattura. Le informazioni aggiunte possono essere utilizzate per collezionare le notifiche in base all'ApplicativoMittente o all'IdTrasmittente.
  • [#36] Nella Fatturazione Passiva è stata aggiunta la possibilità di consegnare all'applicativo, oltre alla fattura, anche il file Metadati ricevuto dallo SDI. Il contenuto di tale file viene inserito, codificato in base64, nell'header HTTP
    'GovWay-SDI-FileMetadati'.
  • [#31] Aggiunta la possibilità di disabilitare la generazione, da parte di GovWay, dei nomi SDI da associare alle fatture da inviare (fatturazione attiva) e alle notifiche esito (fatturazione passiva). Se viene disabilitata la funzionalità (attiva per default), la gestione dei nomi dei file (correttezza sintattica, univocità, ...) è demandata all'Applicativo Client che deve obbligatoriamente fornire il nome del file attraverso un parametro della query ('NomeFile') o un header http ('GovWay-SDI-NomeFile').
  • Realizzato adeguamento necessario per ricevere le notifiche nel nuovo formato 'Fatturazione B2B'.
  • Corretto problema che causava un salvataggio errato dei dati presenti nella traccia della richiesta, nel caso in cui fossero rilevate eccezioni di livello 'INFO'. I dati della traccia della richiesta riportavano erroneamente i dati relativi alla risposta.

Miglioramenti al profilo eDelivery

E' stata introdotta la compatibilità con la versione 4 di Domibus

Miglioramenti all'Installer

Sono state apportati i seguenti miglioramenti all'Installer binario:

  • Aggiunta all'Installer la possibilità di indicare la generazione degli archivi relativi ai nuovi servizi di configurazione e monitoraggio tramite API.
  • Non è più consentito installare GovWay senza la presenza del profilo 'API Gateway'.
  • Aggiunto supporto per le nuove versioni dell’application server 'WildFly' 15.x e 16.x

Continuous Integration

  • Introduzione dell'uso di Jenkins: ogni commit sul master del progetto (https://github.com/link-it/govway) viene verificato tramite l'esecuzione di oltre 7000 test. Lo stato di ogni commit è verificabile accedendo alla pagina https://jenkins.link.it/govway/job/GovWay/

  • OWASP Dependency-Check: tutte le dipendenze relative a jar 3parti vengono adesso verificate per sapere se esistono vulnerabilità conosciute (fase 'verify' di Maven).

GovWay Docker

Le versioni rilasciate di GovWay sono disponibili su DockerHub: https://hub.docker.com/r/linkitaly/govway

Il progetto govway-docker (https://github.com/link-it/govway-docker) fornisce tutto il necessario per produrre un'ambiente di prova per GovWay funzionante in formato Docker, a partire dai sorgenti.

Sorgenti e Librerie 3Parti

Introdotto l'utilizzo di Maven (https://maven.apache.org/) per migliorare gli aspetti di gestone delle librerie esterne, di compilazione e di packaging. Ogni funzionalità introdotta, descritta di seguito, è attivabile con il relativo comando maven eseguibile nella radice del progetto:

  • Le librerie 3parti non devono più essere reperite tramite un file statico esterno, ma vengono scaricate da rete nella fase 'initialize'.
  • Gli archivi jar sono ottenibili tramite il comando 'mvn compile'.
  • Il pacchetto di installazione può essere prodotto a partire dai sorgenti utilizzando il comando 'mvn package'.
  • La documentazione può essere generata a partire dai sorgenti (resources/doc/src/) utilizzando il comando 'mvn package -Dpackage.doc.generate=true' (è richiesto sphinx e latex)

Fix minori

Sono stati risolti i seguenti bug:

  • Contatore Richieste Attive su Rate Limiting: non venivano decrementati i contatori delle richieste attive di una policy di Rate Limiting, se la transazione aveva un esito per cui era stato disabilitato il tracciamento.
  • ProxyReverse: gestita funzionalità ProxyReverse per header 'Location' e 'Content-Location' anche sui codici di risposta non inerenti il Redirect.
  • MultiTenant dopo aggiornamento [#20]: l'aggiornamento dalla versione 3.0.0 alla versione 3.0.1 non permette di attivare il multi-tenant se nella precedente versione era stato creato più di un soggetto di dominio interno.