GovWay v3.1.0.rc1
Pre-releaseNuove 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.