Releases: link-it/govway
GovWay v3.3.9.p3
Miglioramenti alla gestione dei Certificati X.509
Per ogni certificato è adesso possibile accedere anche alle seguenti informazioni:
-
verificare se una Certificate Policy è presente o meno sul certificato ed accedere alle informazioni interne della policy;
-
verificare i basic constraints (CA, pathLen);
-
ottenere le Authority Information Access presenti nel certificato:
- CA Issuers;
- OCSP.
-
ottenere i CRL Distribution Points presenti nel certificato.
Bug Fix
Sono stati risolti i seguenti bug:
-
con interfacce OpenAPI complesse di grandi dimensioni la validazione dei contenuti utilizzando la libreria "swagger-request-validator" impiegava diversi secondi ad inizializzare lo schema, anche per richieste successive alla prima dove le informazioni vengono salvate in cache;
-
la negoziazione di un token in modalità 'SignedJWT' utilizzando un keystore di tipo 'JWK Set' falliva con il seguente errore: "Errore avvenuto durante la consegna HTTP: (Errore di Connessione) JWT Signature keystore password undefined";
-
sono state risolte le seguenti vulnerabilità relative ai jar di terza parte:
- CVE-2021-37533: aggiornata libreria 'commons-net' alla versione 3.9.0;
- CVE-2022-40150: aggiornata libreria 'jettison' alla versione 1.5.2.
Per la console di gestione sono stati risolti i seguenti bug:
-
utilizzando il database SQLServer l'accesso alla pagina di configurazione di una erogazione o fruizione produceva il seguente errore SQL: "ERROR ... org.openspcoop2.core.mapping.DBMappingUtils._mappingErogazionePortaApplicativaList: Ambiguous column name 'descrizione'";
-
la selezione della modalità 'interfaccia avanzata', tramite la voce presente nel menù in alto a destra, presentava le seguenti problematiche:
-
la modalità selezionata veniva erroneamente visualizzata anche accedendo al profilo dell'utenza, invece dei criteri configurati in maniera persistente per quell'utente;
-
anche se veniva selezionata la modalità 'interfaccia avanzata', la selezione di connettori differenti da http (jms, file, ...) non era disponibile se il profilo persistente associato all'utente era definito come 'interfaccia standard';
-
-
la modifica del keystore di un applicativo ModI, nella sezione 'Sicurezza Messaggio', provocava un errore e nel file di log era presente la segnalazione: "Parametro [confSSLCredWizStep] Duplicato.";
-
effettuando un export contenente la configurazione di un soggetto diverso dal soggetto di default dichiarato nell'installer, la successiva importazione dell'archivio in un'installazione in cui tale soggetto fosse stato definito come soggetto di default provocava una inconsistenza delle configurazioni, segnalata dalla console al momento del login.
GovWay v3.3.9.p2
Miglioramenti alla funzionalità di Correlazione Applicativa
Sono state aggiunte ulteriori modalità di estrazione dell'identificativo di correlazione applicativa:
-
Template: l'id di correlazione è il risultato dell'istanziazione del template fornito rispetto ai dati della richiesta;
-
Freemarker Template: l'id è ottenuto tramite il processamento di un Freemarker Template;
-
Velocity Template: l'id è ottenuto tramite il processamento di un Velocity Template.
Miglioramenti alla funzionalità 'Header di Integrazione'
Oltre alle informazioni standard previste dagli header di integrazione di GovWay, i client applicativi possono adesso fornire informazioni custom al gateway tramite un json il cui formato può essere arbitrariamente definito dal client.
Il json può essere inviato nell'header http 'GovWay-Integration' codificato in base64.
La presenza dell’header http non è obbligatoria ma se presente le informazioni contenute vengono rese disponibili per l'uso nelle varie funzionalità del gateway, come ad esempio la correlazione applicativa o l'utilizzo di claim custom nella generazione di token di sicurezza ModI, o nella generazione di asserzioni JWT per la negoziazione di token OAuth.
Miglioramenti alla modalità di generazione dei token JWT
Per quanto concerne i claim aggiuntivi che possono essere aggiunti all'interno del payload dei JWT generati da GovWay è adesso possibile:
-
aggiungere il claim solamente se la risoluzione dinamica del valore viene effettuata con successo utilizzando la forma opzionale "?{..}";
-
definire tipi primitivi json (boolean,int,long,float,double) effettuando un cast nella forma "cast(<valore> as <tipoPrimitivo>)";
-
convertire una lista json di tipi primitivi in lista di stringhe effettuando un cast nella forma "cast(<valore> as string array)".
Bug Fix
È stata introdotta una politica di generazione automatica degli header HTTP indicati di seguito, se non ritornati dal backend che implementa l'API, con lo scopo di evitare alcune vulnerabilità a cui possono essere soggette le implementazioni delle API:
-
X-Content-Type-Options: nosniff
-
Cache-Control: no-cache, no-store, must-revalidate
Pragma: no-cache
Expires: 0
Vary: *
NOTE: Il caching viene disabilitato per evitare che delle risposte vengano inopportunamente messe in cache, come indicato nelle Linee Guida - raccomandazioni tecniche per REST 'RAC_REST_NAME_010'. Il mancato rispetto di questa raccomandazione può portare all’esposizione accidentale di dati personali.
Per la console di gestione sono stati risolti i seguenti bug:
- l'aggiornamento dell'interfaccia OpenAPI o WSDL di una API provocava un errore non atteso.
Dal log si poteva riscontrare il bug introdotto con la gestione delle vulnerabilità di tipo CSRF nella versione 3.3.9.p1: 'Parametro [_csrf] Duplicato'.
GovWay v3.3.9.p1
Bug Fix
Sono stati risolti i seguenti bug:
-
nel profilo di interoperabilità 'SPCoop' è stata eliminata la dichiarazione del namespace con prefisso 'SOAP_ENV' che veniva inserito nell'header eGov generato senza poi essere effettivamente utilizzato;
-
nelle informazioni salvate durante la negoziazione di un token non venivano memorizzati gli eventuali parametri indicati nella form: audience, scope, client_id, resource (PDND).
Per la console di gestione sono stati risolti i seguenti bug:
-
perfezionata la gestione delle vulnerabilità di tipo CSRF;
-
perfezionata la gestione dell'header http "Content Security Policy (CSP)";
-
la segnalazione 'Visualizza Riferimenti' di un applicativo non visualizzava applicativi con ruoli compatibili con le erogazioni associate;
-
l'associazione di credenziali di tipo basic/ssl/principal ai soggetti e agli applicativi viene adesso effettuata controllando l'univocità della credenziale su entrambi;
-
nella sezione 'sicurezza messaggio' di un applicativo con profilo di interoperabilità ModI, la configurazione relativa ai dati di accesso al keystore risultava eliminabile da console, ma l'operazione non comportava una effettiva pulizia nella base dati dove i dati rimanevano, anche se non più visualizzabili.
Per la console di monitoraggio sono stati risolti i seguenti bug:
- perfezionata la gestione delle vulnerabilità di tipo CSRF.
GovWay v3.3.9
Aggiornamento Librerie Terza Parte
Sono state aggiornate alle versioni più recenti tutte le librerie terza parte utilizzate al fine di risolvere tutte le vulnerabilità note.
Bug Fix
Sono stati risolti i seguenti bug:
-
una richiesta POST senza contenuto e senza ContentType veniva erroneamente riconosciuta come non valida dal filtro CORS e di conseguenza non veniva generato l'header http 'Access-Control-Allow-Origin' nella risposta;
-
corretto errore di parsing che si presentava con alcune SOAPEnvelope:
"Invalid content (</SOAP-ENV:Envelope/>): The markup in the document preceding the root element must be well-formed.".
Sono stati introdotti miglioramenti prestazionali minimizzando gli accessi concorrenti alle varie cache di configurazione tramite l'ausilio di una cache di secondo livello che contiene tutti i dati principali raccolti durante la gestione della prima richiesta.
Per la console di monitoraggio sono stati risolti i seguenti bug:
-
utilizzando il database SQLServer la ricerca base nello storico delle transazioni produceva il seguente errore SQL:
"ERROR <20-10-2022 14:03:03.969> org.openspcoop2.core.commons.search.dao.jdbc.JDBCAccordoServizioParteSpecificaServiceSearch.findAll(348): Ambiguous column name 'tipo_soggetto'."
-
era erroneamente possibile cancellare testo nel contenuto di un messaggio visualizzato nel dettaglio di una transazione;
-
sono stati corrette le seguenti anomalie relative alla funzionalità di export CSV delle configurazioni:
-
l'export produceva risultati non deterministici e/o incompleti;
-
l'username associato ad una erogazione tramite servizio IntegrationManager/MessageBox non veniva riportato nel report.
-
GovWay v3.3.8
Miglioramenti alla funzionalità di Identificazione degli Applicativi
È stata estesa la possibilità di censimento degli applicativi fornendo le seguenti nuove opzioni:
-
registrare applicativi afferenti a domini esterni anche per il profilo APIGateway, con la possibilità di censirli puntualmente tra i criteri di autorizzazione per richiedente;
-
registrare applicativi con credenziali di tipo 'token'. La nuova funzione consente al processo di autenticazione tramite token di identificare anche questo tipo di client, che saranno quindi riconoscibili nei log e utilizzabili per le ricerche negli strumenti di monitoraggio.
Nel controllo degli accessi di erogazioni e fruizioni è stata aggiunta la possibilità di autorizzare per richiedente o per ruolo gli applicativi identificati tramite token, prima autorizzabili sono sulla base dei valori dei token presentati.
Nel profilo di interoperabilità 'ModI' la nuova modalità consente:
-
di identificare ed autorizzare puntualmente gli applicativi registrati su PDND;
-
di attuare controlli di consistenza tra i certificati utilizzati dal chiamante nei casi di utilizzo simultaneo dell'header Authorization, generato dalla PDND, e dell'header Agid-JWT-Signature, generato dalla parte mittente.
Miglioramenti alla funzionalità di RateLimiting
Sono state ottimizzate le prestazioni in caso di utilizzo degli scenari di conteggio tramite storage distribuito tra i nodi del cluster. Vengono adesso utilizzati 'atomic-long', sia sull'implementazione 'Hazelcast' che sull'implementazione 'Redis'.
Per l'implementazione 'Hazelcast' sono inoltre stati effettuate le seguenti ulteriori ottimizzazioni:
-
aggiunta una tecnica di sincronizzazione basata sui 'PN Counters';
-
aggiunta la possibilità di definire un'unica configurazione di rete condivisa tra tutte le istanze attivate per ogni tecnica.
Miglioramenti alla funzionalità di Gestione dei Token
Migliorata la validazione dei token:
-
aggiunto controllo che verifica che la data indicata nel claim 'iat' non rappresenti una data futura;
-
aggiunta la possibilità di configurare una token policy di validazione che utilizzi, per la validazione del token, il certificato presente negli header x5c e x5t del JWT.
Migliorata la gestione degli access token negoziati con gli Authorization Server:
-
aggiunto supporto per il parametro 'resource' richiesto nella v4.1 della PDND;
-
in una policy di tipo 'Signed JWT', se utilizzata con API registrate con profilo di interoperabilità ModI, è adesso possibile firmare l'asserzione e valorizzare i paramtri ClientId e KID utilizzando il keystore e i dati definiti sull'applicativo richiedente;
-
i token JWT scambiati durante la negoziazione di un token vengono adesso salvati nella traccia escludendo la parte relativa alla signature.
Miglioramenti alla funzionalità di Autenticazione
Per l'autenticazione https è adesso possibile:
-
associare un truststore per verificare i certificati client ricevuti;
-
definire delle CRL per la verifica delle revoche.
Le stesse funzionalità sono state rese disponibili anche per il gestore delle credenziali utilizzabile per l'autenticazione tramite certificati client ottenuti tramite header HTTP.
In quest'ultima modalità è stata aggiunta la possibilità di decodificare i certificati ricevuti in entrambe le modalità supportate, prima provando la decodifica 'urlEncoded' ed in caso di fallimento la decodifica 'base64'.
Miglioramenti alla funzionalità di Autorizzazione
Sia nell'autorizzazione per token claims che nell'autorizzazione per contenuti è adesso possibile:
-
definire controlli di uguaglianza case insensitive;
-
definire delle condizioni 'not' in cui si indicano i valori che non devono essere posseduti da un claim o da una risorsa;
-
utilizzare la negazione anche sulle verifiche effettuate tramite espressioni regolari.
Miglioramenti alla funzionalità di Correlazione Applicativa
E' stata aggiunta la possibilità di modificare l'attuale comportamento di govway, attivando il troncamento dell'identificativo estratto alla massima lunghezza consentita di 255 caratteri.
Il comportamento di default resta lo stesso della precedente versione: nel caso l'identificativo estratto superi la massima lunghezza consentita di 255 caratteri, la transazione termina con errore o senza estrarre l'identificativo a seconda della modalità di gestione della regola di estrazione configurata (blocca/accetta).
Miglioramenti alla funzionalità dei Connettori
Nella gestione del proxy pass reverse è stata aggiunta la gestione dei path e dei domini presenti negli header Set-Cookie delle risposte (disabilitata per default).
È stata inoltre aggiunta la possibilità di abilitare o disabilitare sulla singola erogazione o fruizione:
-
la traduzione di entrambi gli attributi di un Set-Cookie o solamente di uno dei due;
-
la traduzione dell'header 'Location' e/o Content-Location.
Infine è adesso possibile abilitare la funzionalità di proxy pass reverse anche su API SOAP (disabilitata per default).
Miglioramenti alla funzionalità di Tracciatura su File
È adesso possibile configurare una 'DenyList' o una 'WhiteList' che consente di personalizzare gli header HTTP ottenibili tramite la chiamate delle primitive: 'getInRequestHeaders', 'getOutRequestHeaders', 'getInResponseHeaders', 'getOutResponseHeaders'.
È inoltre stato corretto un bug presente nell'uso dell'istruzione '${logBase64:xx}' su tali primitive: il valore codificato in base64 restituito conteneva una lista di header in cui i nomi e i valori erano nuovamente codificati in base64.
È infine adesso possibile abilitare il dump binario solamente per gli headers o per il payload dei messaggi scambiati.
Miglioramenti alle funzionalità base dell'API Gateway
Sono stati introdotti significativi miglioramenti prestazionali:
-
in presenza di stress test alcune comunicazioni terminavano con l'errore "Cannot assign requested address" dovuto ad un numero troppo basso (5) di connessioni http 'keep-alive' mantenute aperte per una stessa destinazione (numero aumentato per default a 200);
-
risolto degrado delle performance, che avveniva in presenza di trasformazione Freemarker o Velocity, attraverso il salvataggio dell'oggetto template istanziato in cache;
-
è adesso possibile configurare una 'DenyList' o una 'WhiteList' che consente di personalizzare gli header HTTP che devono essere registrati su database tramite la funzionalità di registrazione messaggi;
-
migliorata la latenza introdotta da GovWay (attualmente pochi millisecondi) durante la gestione di una prima richiesta non ancora in cache, su API Rest contenenti molte risorse (es. 600), in cui la latenza introdotta da GovWay era nell'ordine dei secondi (5,7 secondi);
-
le richieste che richiedevano la validazione/negoziazione di un token, il recupero di attributi da un AttributeAuthority o l'invocazione di meccanismi di autenticazione/autorizzazione esterni acceduti via http (implementati tramite plugin) potevano far scaturire l'errore "Could not acquire semaphore after 30000ms", quando il servizio http esterno contattato (es. Authorization Server) non rispondeva mandando la richiesta in read timeout e nel frattempo continuavano ad accumularsi richieste che necessitavano dell'invocazione del servizio esterno poichè l'informazione richiesta non era in cache. L'errore si amplificava poichè per stessa funzionalità (es. Token Policy di Negoziazione) non vi era un lock dedicato alla singola policy ma un lock condiviso tra tutte le policy. La problematica è stata risolta:
-
dedicando un lock ad ogni Token Policy, AttributeAuthority o tipo di autenticazione/autorizzazione;
-
abbassando i tempi di read-timeout di default a 10 secondi;
-
consentendo un numero di richieste parallele verso il servizio esterno quando le informazioni non sono in cache (default 10), in modo da non rendere seriale l'inizializzazione della cache.
-
Miglioramenti al Profilo di Interoperabilità 'ModI'
Sono stati apportati i seguenti miglioramenti:
-
aggiunto controllo che verifica che la data indicata nel claim 'iat' (API di tipo REST) e nell'elemento 'Timestamp/Created' (API di tipo SOAP) non rappresenti una data futura (viene applicato un intervallo di tolleranza configurabile, con un default di 5 secondi);
-
nel controllo degli accessi, è adesso possibile definire un criterio di autorizzazione basato sui ruoli dell'applicativo richiedente;
-
è ora possibile personalizzare il comportamento del pattern 'INTEGRITY_REST_01', delegando la parte relativa alla gestione dell'integrità (calcolo/verifica Digest, gestione claim 'signed_header' o simile) alla componente applicativa. Con questa modalità è possibile anche personalizzare il nome dell'header HTTP utilizzato.
Miglioramenti alle Console
È stata migliorata la modalità di selezione dei profili di interoperabilità e dei soggetti operativi:
-
a login effettuato, il profilo e il soggetto proposti sono quelli associati per default all'utente e sono modificabili accedendo al 'Profilo Utente';
-
la selezione dal menù a tendine, visualizzato in alto a destra nella console, ha un effetto immediato ma non viene più resa persistente dopo un logout;
-
relativamente alla sola console di gestione, gli stessi criteri di selezione del profilo e del soggetto sono stati riportati anche nella selezione della modalità di utilizzo dell'interfaccia (standard/avanzata);
-
relativamente alla sola console di monitoraggio è adesso possibile definire la sezione visualizzata al momento del login, selezionandola tra le seguenti due voci:
-
pagina di ricerca delle transazioni
-
report statistico; in questo caso viene consentito anche di definire l'intervallo temporale di default.
-
Infine è stato risolto un problema sulla console di gestione che non ne consentiva l'utilizzo in contemporanea su più...
GovWay v3.3.7
Miglioramenti alla funzionalità di Validazione dei Contenuti
Aggiunto supporto per le richieste 'multipart/form-data' e 'multipart/mixed':
-
https://swagger.io/docs/specification/describing-request-body/multipart-requests/
-
https://swagger.io/docs/specification/describing-request-body/file-upload/
È stata inoltre introdotta la possibilità di ottimizzare (su una singola erogazione o fruizione) la validazione dei messaggi ricevuti, sospendendo l'analisi dello stream dopo aver validato tutti i metadati non binari previsti dall'interfaccia OpenAPI.
Miglioramenti alla funzionalità di RateLimiting
Aggiunte nuove modalità di gestione delle policy di RateLimiting utilizzabili su un cluster di nodi:
-
possibilità di suddividere le quote previste per il numero di nodi attivi; questa modalità permette, potendo sfruttare la collaborazione del load balancer, di ottenere il conteggio corretto delle quote previste anche senza bisogno di utilizzare uno storage distribuito tra i nodi del cluster;
-
possibilità di gestire il conteggio tramite storage distribuito tra i nodi del cluster; per limitare il degrado prestazionale introdotto dalla gestione del conteggio distribuito, è possibile configurare opzioni di comunicazione asincrona tra i nodi del cluster, ottenendo performance migliori a discapito della precisione nei conteggi.
La modalità di configurazione del rate limiting può essere perfezionata per ogni erogazione o fruizione di API, permettendo quindi di adottare la soluzione più opportuna per ogni singola API gestita da GovWay.
È inoltre stata introdotta la possibilità di personalizzare gli header HTTP restituiti ai client, relativi alle informazioni sulle quote e sulle finestre temporali delle policy di rate limiting: è possibile disabilitarne del tutto la generazione o modificarne i valori indicati per quanto concerne la quota (indicazione o meno della finestra temporale) e gli intervalli di retry (utilizzo o meno di un tempo di backoff).
È infine stata aggiunta la possibilità di filtrare l'applicabilità di una policy rispetto ai valori presenti in un token OAuth2.
Miglioramenti alla funzionalità di Gestione dei Token
Migliorata la gestione degli access token negoziati con gli Authorization Server:
-
un access token, precedentemente negoziato e disponibile in cache, viene adesso rinegoziato prima della scadenza effettiva (indicata in expireIn) per evitare che possa risultare scaduto una volta ricevuto dall'erogatore, quando utilizzato per richieste gestite in prossimità della scadenza;
-
è adesso possibile configurare il criterio di generazione del claim 'jti' inserito nell'asserzione JWT generata nella modalità 'JWT Signed';
-
i criteri di negoziazione (asserzione JWT, url, clientId) e l'access token ottenuto sono adesso consultabili tramite la console di monitoraggio, accedendo ai dati della transazione (Token Info).
Sono inoltre stati risolti i seguenti problemi:
-
risolto problema di performance in cui l'accesso sincronizzato all'interno della gestione della cache per i token avveniva erroneamente per ogni richiesta anche se il token era già presente in cache;
-
i token ottenuti venivano salvati in cache tramite una chiave formata dal solo nome della Token Policy di negoziazione, ignorando gli eventuali parametri dinamici risolti a runtime. In tale situazione, se una policy con parametri dinamici veniva utilizzata su più fruizioni, poteva succedere che il token negoziato in seguito all'invocazione di una prima fruizione, venisse erroneamente riutilizzato (disponibile in cache) per l'invocazione di una seconda fruizione. Scenario tipico in presenza di PDND dove il purposeId è rappresentato da un parametro dinamico ad esempio indicato dal client tramite un header HTTP.
Infine nelle policy di validazione dei token è adesso possibile indicare come formato dell'access token anche la struttura definita nel RFC 9068.
Miglioramenti alla gestione dei Certificati X.509
I certificati scambiati nelle richieste sono adesso accessibili dal contesto tramite le keyword:
- 'transportContext': consente di accedere ai certificati TLS;
- 'securityToken': consente di accedere ai certificati presenti nei token di sicurezza messaggio ModI e negli access token JWT.
Per ogni certificato è adesso possibile accedere alle seguenti informazioni:
- accedere ai singoli campi di un DN;
- verificare se una keyUsage è presente o meno sul certificato;
- verificare se un purpose (extendedKeyUsage) è presente o meno sul certificato.
L'oggetto associato alla keyword 'securityToken' (org.openspcoop2.protocol.sdk.SecurityToken) consente di ottenere anche solamente la parte relativa all'header o al payload del token ModI (Authorization o Agid-JWT-Signature) o dell'access token JWT. Inoltre consente di accedere puntualmente ai singoli claim presenti nell'header o nel payload del token.
Le informazioni sopra descritte sono ora utilizzabili nella gestione delle seguenti funzionalità di GovWay:
-
autorizzazione per Token Claims;
-
autorizzazione per Contenuti;
-
trasformazioni.
Miglioramenti alla funzionalità di Correlazione Applicativa
Aggiunto il supporto per applicare regole di correlazione applicativa su richieste multipart per API di tipo REST: l'identificativo viene ricercato all'interno del primo part che rappresenta un contenuto xml o json.
Miglioramenti alla funzionalità di Tracciatura su File
Tra le informazioni che possono essere riversate nei file di log associati ai topic di file trace, sono adesso disponibili:
-
dettagli sui token negoziati con gli Authorization Server;
-
informazioni sul certificato TLS Client;
-
dettagli sui token OAuth2 validati come JWT;
-
informazioni specifiche sul profilo di interoperabilità 'ModI';
-
requesterIP: rappresenta l’indirizzo IP del richiedente e assumerà la prima informazione valorizzata, trovata nella richiesta, nel seguente ordine: forwardedIP, clientIP;
-
resultCode: consente di ottenere il codice numerico di GovWay che rappresenta l'esito della transazione.
Un dettaglio maggiore è disponibile in https://govway.readthedocs.io/it/latest/releaseNotes/3.3.7/fileTrace.html
Miglioramenti alla funzionalità dei Connettori
Nel connettore di tipo 'file' è stata aggiunta la possibilità di definire i permessi (rwx) dei file creati in cui viene serializzato il contenuto della richiesta (payload e header).
Miglioramenti alla Console di Monitoraggio
Sono stati apportati i seguenti miglioramenti alla console di monitoraggio:
- nel dettaglio di una transazione è adesso possibile ispezionare il contenuto multipart delle richieste relativamente ad API di tipo REST.
Bug Fix
Patch version che risolve bug importanti indicati di seguito. La lista completa dei bug risolti è disponibile in https://govway.readthedocs.io/it/latest/releaseNotes/3.3.7/bug.html
Sono stati risolti i seguenti bug:
-
migliorata diagnostica emessa in presenza di una richiesta SOAP vuota (senza http payload), rispetto al precedente errore che riportava un null pointer: "Riscontrato errore ... errore durante il controllo del namespace del soap envelope: null". La nuova diagnostica riporta invece la causa dell'errore: "Riscontrato errore ... errore durante il controllo del namespace del soap envelope: Invalid empty message"
-
in presenza di una API SOAP con registrazione messaggi abilitata, se la risposta pervenuta conteneva un Content-Type non compatibile con quello della richiesta, GovWay segnalava l'anomalia correttamente nei diagnostici ma non registrava il contenuto della risposta e degli header HTTP;
-
la funzionalità di lettura delle richieste SOAP in streaming veniva erroneamente attivata nel servizio di imbustamento Xml2Soap e causava, nel profilo di interoperabilità 'Fatturazione Elettronica', una spedizione di fatture binarie (P7M/ZIP) corrotte;
-
negli header di integrazione 'Backward Compatibility OpenSPCoop', gli header che riportano il tipo dei soggetti e il tipo del servizio contengono adesso i valori che venivano utilizzati in OpenSPCoop2 (es. PROXY al posto di gw per il profilo 'API Gateway').
Sono stati risolti i seguenti bug relativi al profilo di interoperabilità 'ModI':
-
nel pattern 'Integrity_REST_01' l'header Digest veniva erroneamente sia generato che atteso con una codifica 'hex'. La codifica è stata rivista per utilizzare 'base64' in modo da essere conformi al RFC 5843 (che estende il RFC 3230 indicato nelle Linee Guida). Per garantire la retrocompatibilità è possibile configurare la singola erogazione/fruizione per produrre un header Digest codificato in esadecimale, mentre in fase di validazione è possibile accettare entrambe le codifiche. Per default sia la codifica attesa che quella generata è sempre base64.
-
risolta mancata rilevazione di identificativo duplicato quando sia il dominio fruitore che quello erogatore venivano gestiti sulla stessa instanza di GovWay. La mancata rilevazione avveniva solamente se le richieste duplicate venivano ricevute simultaneamente rispetto all'originale.
Per la console di gestione sono stati risolti problemi relativi alla validazione dell'interfaccia OpenAPI 3.0:
-
la validazione risultava esssere troppo stringente per quanto concerne i valori di default associati ai tipi primitivi (integer, number o boolean) definiti con gli apici (es. '65' invece di 65). Il validatore segnalava un errore simile al seguente: "Validation error(s) : paths./pets1.patch.parameters.schema.default: Value '65' is incompatible with schema type 'integer' (code: 138)"
-
OpenAPI in formato YAML che possedevano anchor "merge key" (es. <<: *) non superavano la validazione dell'interfaccia;
-
il caricamento di un'interfaccia contenente una descrizione superiore a 255 caratteri, causava un errore inatteso in alcuni casi su database Oracle dove si otteneva l...
GovWay v3.3.6.p1
Miglioramenti alla funzionalità di Gestione dei Token
Nella negoziazione di un Token tramite la modalità JWT Signed è adesso possibile:
- configurare i parametri da inserire nell'header non firmato (kid, x5c, x5t ...);
- personalizzare i valori dei claim inseriti nel payload firmato tramite parti dinamiche che vengono risolte a runtime dal Gateway;
- aggiungere claim ulteriori oltre a quelli previsti dallo standard;
- possibilità di abilitare una modalità di compatibilità con la Piattaforma Digitale Nazionale Dati (PDND), che permette di configurare gli ulteriori campi richiesti dalla PDND (purposeId, sessionInfo).
Nella validazione dei token è stata introdotta la possibilità di configurare un formato di token definito tramite mapping puntuale tra il nome di un claim e l'informazione che GovWay cerca di estrarre dal token.
Inoltre nel controllo degli accessi, in una autorizzazione per token claims (o per contenuti), è adesso possibile utilizzare la costante '${undefined}' per indicare che un claim non è atteso all'interno del token.
Infine la funzionalità di proxy applicativo è stata resa attivabile anche nelle comunicazioni verso gli authorization server indicati nelle token policy di negoziazione e validazione e nelle attribute authorities.
Miglioramenti alla funzionalità di Trasformazione
Sono state introdotte utility per la conversione da xml a json e viceversa, utilizzabili all'interno delle trasformazioni di protocollo SOAP->REST e REST->SOAP.
Nelle trasformazioni è inoltre adesso possibile:
- accedere agli allegati caricati nelle erogazioni/fruizioni e nelle API;
- indicare valori dinamici, contenenti parti che vengono risolte a runtime, per quanto concerne il codice http di risposta e i content-type utilizzati nelle richieste e nelle risposte.
Bug Fix
Patch version che risolve bug importanti indicati di seguito. La lista completa dei bug risolti è disponibile in https://govway.readthedocs.io/it/latest/releaseNotes/3.3.6/bug_p1.html
Sono stati effettuati i seguenti interventi migliorativi degli aspetti prestazionali:
- introdotta ottimizzazione nella gestione degli header SOAP: durante la gestione della richiesta o della risposta, se le funzionalità attivate richiedono solamente la gestione del SOAPHeader, viene costruito in memoria la sola rappresentazione DOM dell'header e non dell'intero messaggio mentre il contenuto presente nel body viene trattato in modalità streaming.
Sono stati risolti i seguenti bug:
-
la serializzazione di un token malformato causava la mancata scrittura della transazione su database;
-
i controlli di consistenza del formato di un content-type, già presenti per le richieste ricevute, sono stati introdotti anche per le risposte in modo da avere una diagnostica conforme per entrambi i casi.
Per la console di gestione sono stati risolti i seguenti bug:
-
l'aggiornamento della configurazione ModI di una erogazione o fruizione andava in errore su InternetExplorer 11, per via della presenza di elementi contenenti caratteri che confondevano il visualizzatore di IE;
-
il reset puntuale di una API non eliminava dalla cache la definizione dell'interfaccia OpenAPI o Wsdl;
-
la funzionalità di download dei certificati server di una Token Policy di Negoziazione generava un errore.
GovWay v3.3.6
Miglioramenti alla Console di Gestione
Sono stati apportati i seguenti miglioramenti alla console di gestione:
-
per ogni entità del registro, sia dall'elenco che dal dettaglio, è adesso possibile:
-
rimuovere puntualmente dalla cache i dati relativi all'oggetto;
-
visualizzare i riferimenti agli utilizzi di quella entità;
-
visualizzare una scheda riassuntiva della configurazione di una erogazione o di una fruizione;
-
verificare la validità dei certificati inclusi nei keystore riferiti dai connettori http/https, dalla configurazione del profilo di interoperabilità ModI o riferiti negli applicativi e nei soggetti;
-
aggiunta la possibilità di verificare la connettività anche per gli endpoint configurati nelle Token Policy di validazione e negoziazione, nelle Attribute Authority e negli applicativi di tipo server.
-
-
effettuato un restyling dell'elenco delle Token Policy di validazione e negoziazione e delle Attribute Authority;
-
aggiunta la validazione delle espressioni regolari, degli xpath e dei jsonPath configurabili nelle varie funzionalità gestite da console.
Miglioramenti alla Console di Monitoraggio
Sono stati apportati i seguenti miglioramenti alla console di monitoraggio:
-
aggiunto report statistico che consente di ottenere una distribuzione per tipo di errore;
-
in caso di consegna multipla è stata aggiunta alla transazione l'informazione riguardante il nome del connettore selezionato, informazione ricercabile tramite la console attraverso la casella 'Eventi' nello storico delle transazioni.
Miglioramenti all'Installer
Sono stati apportati i seguenti miglioramenti all'installer binario:
-
aggiunto il supporto per la nuova versione dell'application server 'WildFly': 26.x;
-
è stata uniformata la gestione dei nodi runtime in un unico file 'govway.nodirun.properties'.
Bug Fix
Di seguito vengono indicati i principali bug risolti. La lista completa è disponibile in https://govway.readthedocs.io/it/latest/releaseNotes/3.3.6/bug.html
-
libreria 'log4j2' aggiornata alla versione '2.17.1' per risolvere le vulnerabilità 'CVE-2021-45105' e 'CVE-2021-44832';
-
risolte anomalie riguardanti le richieste SOAP:
-
se prima della definizione dell'elemento Envelope era presente un commento xml (<!-- ... -->) contenente al suo interno una definizione Envelope con versione soap differente, la richiesta veniva interpretata erroneamente con la versione SOAP indicata nella dichiarazione commentata;
-
i messaggi SOAP contenenti come rootElement del Body un child element vuoto con localName che iniziava con 'Body', venivano erroneamente interpretati come messaggi SOAP con body vuoto;
-
-
migliorata diagnostica:
-
il diagnostico "errore di trasporto, codice XXX", che poteva far pensare a problematiche inerenti il trasporto, è stato modificato in "errore HTTP XXX";
-
differenziato diagnostico emesso in caso di consegna condizionale configurata per utilizzare un connettore di default, in modo da riconoscere un caso di estrazione della condizione fallita rispetto al caso di mancata individuazione di un connettore tramite la condizione estratta dalla richiesta;
-
-
una consegna condizionale basata su template, su richieste senza payload (es. HTTP GET), provocava un errore simile al seguente: "Selettore 'Template' non supportato per il message-type 'BINARY'";
-
in caso di utilizzo della funzionalità Load Balancer con algoritmo 'SourceIpHash', la transazione terminava in errore in presenza di indirizzi ip per cui il calcolo 'hashCode' produceva un numero negativo.
Per la console di gestione sono stati risolti i seguenti bug:
-
non era consentito modificare la modalità di caricamento di una credenziale ssl relativa ad un applicativo;
-
è stata rivista la gestione dei connettori multipli:
-
successivamente ad un'operazione di aggiunta o modifica (nome, descrizione, weight ...) si viene adesso riposizionati nella lista dei connettori dove viene selezionato il connettore oggetto della precedente operazione;
-
aggiunto controllo di assegnazione univoca di un filtro ad un connettore multiplo, nel caso di consegna condizionale;
-
eliminata la possibilità di associare filtri al connettore di default, nel caso di consegna condizionale;
-
-
nel menù è adesso possibile utilizzare il tasto destro su tutta la voce e non solo sul testo;
-
la funzionalità di verifica connettività riportava un errore non corretto di 'Read timed out', invece di 'connect timed out', quando veniva verificato un endpoint non raggiungibile ad esempio per problematiche di firewall. L'anomalia è stata risolta aumentando il tempo di attesa dello stato di verifica connettività recuperato dalla console interrogando i nodi run, portando l'attesa da 5 secondi a 60 secondi per default per questo tipo di operazione.
Per la console di monitoraggio sono stati risolti i seguenti bug:
-
il download dei report statistici come immagine, non preservava il font visualizzato nella console;
-
risolta anomalia presente in tutte le distribuzioni statistiche, eccetto quella temporale e per esiti, dove selezionando il periodo 'personalizzato' compariva erroneamente la scelta dell'unità di tempo che non aveva senso per il tipo di distribuzione;
-
in caso di registrazione dei contenuti abilitati, se veniva salvata una richiesta contenente un Content-Type Multipart che però non conteneva effettivamente degli attachments, la consultazione tramite console dei contenuti multipart produceva un errore non atteso e una pagina bianca. Anche la funzionalità di export dei contenuti multipart generava un errore simile.
GovWay v3.3.5.p2
Bug Fix
Patch version che risolve bug importanti indicati di seguito.
-
libreria 'lo4j2' aggiornata alla versione '2.16.0' per risolvere la vulnerabilità 'CVE-2021-45046';
-
nella console di gestione, se configurata in Load Balancing per gestire molteplici nodi, l'accesso alla sezione 'Runtime' causava delle invocazioni verso i nodi gestiti ancor prima di averne selezionato qualcuno o aver richiesto operazioni di gestione (es. svuota cache).
GovWay v3.3.5.p1
Bug Fix
Patch version che risolve bug importanti indicati di seguito. La lista completa dei bug risolti è disponibile in https://govway.readthedocs.io/it/latest/releaseNotes/3.3.5/bug_p1.html
-
libreria 'lo4j2' aggiornata alla versione '2.15.0' per risolvere la vulnerabilità 'CVE-2021-44228';
-
nel profilo di interoperabilità 'ModI' con API REST configurata con pattern 'Integrity', la validazione degli header firmati non rilevava, in presenza di molteplici header HTTP con lo stesso nome, l'esistenza di un valore ulteriore rispetto a tutti quelli definiti all'interno del claim 'signed_headers';
-
se venivano ricevuti messaggi SOAP che iniziavano con il carattere '>' l'anomalia veniva correttamente segnalata al client, ma nel log veniva emessa un'eccezione relativa ad un caso non gestito (NullPointerException);
-
aggiunta gestione del charset nella classe 'OpenSPCoop2MessageSoapStreamReader' utilizzata per leggere le informazioni SOAP in streaming;
-
risolto bug di serializzazione di un messaggio SOAP With Attachments, che si presentava quando il messaggio veniva acceduto per funzionalità read-only (es. correlazione applicativa), che provocava la generazione di un content-type con un mimepart differente da quello effettivamente serializzato;
-
la normalizzazione dell'input stream 'vuoto', viene adesso gestita tramite l'utilizzo di un buffer di lunghezza 2 compatibile con il charset 'UTF-16';
-
corretti problemi presenti sulla funzionalità 'follow-redirect' che non consentivano di ottenere una risposta applicativa una volta seguito il flusso di redirect;
-
risolti problemi presenti nella funzione di merge degli schemi OpenAPI:
-
l'import di file i cui nomi erano uno inclusivo dell'altro causavano una serializzazione di un path scorretto;
-
la serializzazione YAML dell'interfaccia generava alcune enumeration (es. in security schema) con i valori maiuscoli invece che minuscoli come atteso dalla specifica OpenAPI;
-
-
in caso l'immagine del controllo del traffico, salvata durante uno shutdown dell'A.S., risultava corrotta, il gateway non ripartiva; è stata migliorata la gestione facendo in modo che il gateway riparta con stato iniziale vuoto e segnali l'anomalia su file di log.
-
in presenza di richieste malformate che causavano la generazione di un diagnostico contenente il carattere '\u0000', su ambienti con database di tipo Postgresql si otteneva un errore simile al seguente durante il tracciamento: Caused by: org.postgresql.util.PSQLException: ERROR: invalid byte sequence for encoding "UTF8": 0x0.
Sono stati inoltre effettuati i seguenti interventi migliorativi degli aspetti prestazionali:
-
gli oggetti java.util.Hashtable e java.util.Vector sono stati sostituiti con strutture più efficienti;
-
sostituiti i blocchi synchronized con l'uso di java.util.concurrent.Semaphore, relativamente alla negoziazione di connessioni e alla funzionalità di filtro dei duplicati;
-
gli oggetti restituiti dalle factory dei profili di interoperabilità che contengono solamente configurazioni statiche, vengono adesso istanziate solamente una volta all'avvio del gateway;
-
il recupero dell'identificativo della PrimaryKey di una nuova entry, avviene adesso, anche su postgresql, utilizzando la funzionalità 'getGeneratedKeys' fornita dai driver jdbc postgresql con versione superiore alla 9.4;
-
il provider 'Bouncy Castle' viene adesso utilizzato per gestire i certificati (java.security.cert.CertificateFactory e java.security.cert.CertPathValidator) e per calcolare il digest di un messaggio (java.security.MessageDigest).
Per la console di gestione sono stati risolti i seguenti bug:
-
una connessione al database veniva acceduta dalla console anche per gestire risorse statiche non protette (es. js/autocomplete.js o css/linkit-base.css);
-
corretto bug presente nella funzionalità di export e import di un'API che, in alcune configurazioni particolari, poteva non preservare la configurazione del profilo di collaborazione, del filtro duplicati, del riferimento alla richiesta e dell'id di conversazione;
-
la ricerca delle operazioni effettuate sulla console, tramite la funzionalità di 'Auditing', avviene adesso tramite criteri "contains case insensitive". Inoltre nella lista delle operazioni individuate è stata aggiunta la data di esecuzione dell'operazione.
Per la console di monitoraggio sono stati risolti i seguenti bug:
-
le pagine xhtml presentavano erroneamente campi 'date' con un time zone 'forzato' a 'Europe/Rome';
-
aggiunta la possibilità di selezionare in blocco gli elementi visualizzati nello storico delle transazioni;
-
nell'export CSV delle transazioni sono stati aggiunte le seguenti informazioni mancanti:
- richiedente;
- dettaglio dell'errore o dell'anomalia;
- informazioni principali estratte dal token: subject, issuer, clientId, username ed indirizzo eMail.