Skip to content

GovWay v3.1.0.rc1

Pre-release
Pre-release
Compare
Choose a tag to compare
@andreapoli andreapoli released this 28 May 14:16
· 1643 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.

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'.

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/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.