Release Notes di OpenSPCoop2


1. Versione 2.3.1
1.1. Miglioramenti all’Installer
1.2. Nuove funzionalità di Autenticazione
1.3. Nuove funzionalità di Autorizzazione
1.4. Miglioramenti sui connettori http/s
1.5. Nuovo Connettore ‘File’
1.6. Miglioramenti su WSSecurity
1.7. Miglioramenti alla Console di Gestione
1.8. Bug Fix Protocollo Trasparente
1.9. Bug Fix Protocollo SPCoop
1.10. Bug Fix
2. Versione 2.3
2.1. Versione Java
2.2. Nuove versione supportate dell’Application Server
2.3. Librerie Terze Parti
2.4. Miglioramenti all’Installer
2.5. Miglioramenti alla Console di Gestione
2.6. Bug Fix
3. Versione 2.2.1
3.1. Evoluzioni – Porta di Dominio
3.2. Miglioramenti alla Console di Gestione
3.3. Identificativi Protocollo Trasparente
3.4. Bug Fix
4. Versione 2.2
4.1. Protocollo SDI per la Fatturazione Elettronica
4.2. Protocollo SPCoop
4.3. Funzionalità  generiche della PdD
4.4. Interfaccia Grafica PddConsole
5. Versione 2.1
5.1. Gestione del protocollo SDI per la Fatturazione Elettronica
5.2. Modificati contesti di default dei protocolli ‘spcoop’ e ‘trasparente’
5.3. Restyling dell’interfaccia grafica PddConsole
5.4. Nuovo meccanismo di importazione delle configurazioni
5.5. Supporto MTOM
5.6. Modalità di identificazione dell’azione wsdlBased
5.7. Aggiunto supporto alla piattaforma database DB2
6. Novità di OpenSPCoop-v2 rispetto ad OpenSPCoop
6.1. Protocollo di Cooperazione personalizzabile tramite plugin
6.2. Supporto Web Services Standard non-SPCoop
6.3. Configurazione dei servizi in modalità “Local Forward”
6.4. Middleware di gestione SOAP basato su CXF
6.5. Drastico miglioramento del supporto di WS-Security
6.6. Arricchimento dei dati di tracciamento
6.7. Nuove piattaforme RDBMS supportate: HSQL e SQLServer
6.8. Nuove versione supportate dell’Application Server

1. Versione 2.3.1

In questa sezione sono descritte le principali nuove funzionalità e i problemi risolti nella versione 2.3.1 di OpenSPCoop. Per un elenco dettagliato dei problemi risolti e per maggiori dettagli sulle funzionalità si può invece far riferimento al file ChangeLog di questa versione.

1.1. Miglioramenti all’Installer

Sono state apportati i seguenti miglioramenti all’Installer binario:

  • Datasource JBoss7/WildFly; Modificati i datasource prodotti dall’installer per usare il prefisso ‘java:/’ per i nomi JNDI, come richiesto dagli application server JBoss7 e WildFly per la registrazione da console.

  • Datasource Tomcat8; Aggiornati i Datasource generati dall’installer per la versione di Tomcat 8 per adeguare i parametri all’aggiornamento delle librerie apache commons pool e commons dbcp usate da Tomcat8 (passaggio alla versione 2 delle librerie). I Warning sollevati dal servlet container erano i seguenti:

    • WARNING Property maxActive is not used in DBCP2, use maxTotal instead.
    • WARNING Property maxWait is not used in DBCP2 , use maxWaitMillis instead.

1.2. Nuove funzionalità di Autenticazione

Sono state apportate i seguenti miglioramenti alle funzionalità di autenticazione:

  • Principal; Introdotta la nuova tipologia di autenticazione ‘principal’ associabile ad un servizio applicativo. Con questa modalità l’autenticazione va configurata sull’application server o con qualunque altra modalità che permetta alla Porta di Dominio di accedere al principal tramite la api HttpServletRequest.getUserPrincipal().

  • Nuovi parametri nella fruizione; Durante l’aggiunta di una fruizione sulla parte specifica di un accordo di servizio è ora possibile specificare la modalità di autenticazione prescelta (basic/ssl/principal/disabilitata).

  • Autenticazione dei Soggetti; E’ ora possibile gestire l’autenticazione del soggetto fruitore (basic/ssl/principal) sulla porta applicativa, con le stesse modalità già previste per i servizi applicativi sulla porta delegata.

  • Nuovi parametri nell’erogazione; Durante l’aggiunta di una erogazione (parte specifica di un accordo di servizio) è ora possibile specificare la modalità di autenticazione prescelta (basic/ssl/principal/disabilitata).

  • Opzionale; Nella definizione delle porte delegate e applicative è ora possibile configurare l’obbligatorietà o meno dell’autenticazione.

1.3. Nuove funzionalità di Autorizzazione

Sono state apportate i seguenti miglioramenti alle funzionalità di autorizzazione:

  • Ruoli; E’ ora possibile attribuire un ruolo a servizi applicativi e soggetti fruitori. La gestione dei ruoli può essere effettuata direttamente sulla console della Porta di Dominio (ruoli locali) o delegata all’Application Server o a qualunque altra modalità che permetta alla Porta di Dominio di accedere ai ruoli tramite la api HttpServletRequest.isUserInRole().

  • Autorizzazione sulla Porta Applicativa; E’ ora possibile gestire l’autorizzazione del fruitore sulla porta applicativa, con le stesse modalità già previste per i servizi applicativi sulla porta delegata.

  • Nuovi criteri di Autorizzazione; Riviste le modalità di gestione dell’autorizzazione sulle porte delegate e applicative:

    • autorizzazione dei client autenticati; prevede di elencare puntualmente i servizi applicativi (PD) o i soggetti (PA) abilitati all’accesso.

    • autorizzazione basata sui ruoli; prevede di elencare i ruoli richiesti per l’abilitazione all’accesso.

    • xacmlPolicy; prevede di limitare l’accesso ai soli servizi applicativi (PD) o soggetti fruitori (PA) che soddisfano la policy XACML associata al servizio.

  • Nuovi parametri nella fruizione; Durante l’aggiunta di una fruizione sulla parte specifica di un accordo di servizio è ora possibile specificare la modalità di autorizzazione prescelta.

  • Nuovi parametri nell’erogazione; Durante l’aggiunta di una erogazione (parte specifica di un accordo di servizio) è ora possibile specificare la modalità di autorizzazione prescelta.

1.4. Miglioramenti sui connettori http/s

Sono state apportate i seguenti miglioramenti sui connettori http e https della porta di dominio:

  • Proxy; Aggiunta la possibilità di impostare l’utilizzo di un proxy http sul singolo connettore.

  • Redirect/TransferEncoding; Aggiunta una sezione di configurazione ‘Opzioni Avanzate’ sul singolo connettore. Tale sezione, accessibile in modalità ‘avanzata’, consente di:

    • abilitare la gestione di un eventuale redirect http restituito da un servizio, specificando anche il massimo numero di hop accettati;

    • scegliere la modalità di trasferimento dei dati (transfer-encoding-chunked o con content length fisso).

  • SSL Type; Migliorata la configurabilità del connettore HTTPS tramite pddConsole. Il default è stato modificato in modo da fornire l’implementazione più recente disponibile sulla jvm su cui è in esecuzione la PdD. Inoltre le versioni disponibili del protocollo SSL impostabili vengono recuperate dinamicamente leggendo i protocolli supportati dalla jvm.

  • Informazioni Runtime; Aggiunta, nella sezione ‘Configurazione – Runtime’, la voce ‘Informazioni SSL’ che mostra, per ogni SSLType, gli effettivi protocolli abilitati nella jvm su cui la PdD è in esecuzione. Inoltre sempre nella sezione ‘Configurazione – Runtime’ vengono ora mostrate, oltre alla versione di java anche molte altre informazioni riguardanti la jvm tra cui gli algoritmi di cifratura e firma. In questo modo è ora possibile sapere quale protocollo SSL venga effettivamente utilizzato rispetto alla tipologia configurata sul connettore https. La scelta può infatti variare a seconda della JVM. Ad es. sulla versione 1.7.0_75 di Oracle, se si utilizza il tipo SSL ‘SSLv3’, la comunicazione https verrà instaurata tramite ‘TLSv1’ poichè associato al tipo ‘SSLv3’ risulta abilitato solamente ‘TLSv1’.

1.5. Nuovo Connettore ‘File’

Introdotto un nuovo tipo di connettore che permette la serializzazione del messaggio in arrivo su file system. Il path dove serializzare il messaggio può essere indicato dinamicamente, basandosi su id della transazione, data di elaborazione, etc.

1.6. Miglioramenti su WSSecurity

Sono state apportate i seguenti miglioramenti per quanto concerne la gestione della sicurezza dei messaggi:

  • Asserzioni SAML; Aggiunta la possibilità di creare asserzioni SAML (1.1 e 2.0) senza dover implementare una classe java di Callback. Tutti i parametri dell’asserzione SAML (Subject, AuthnStatement e Attributi) possono essere specificati in un file di properties associabile alla singola Porta Delegata o Porta Applicativa tramite la proprietà ‘samlPropFile’. In tal modo nella maggior parte dei casi in cui serve generare una asserzione SAML non è più necessario ricorrere all’implementazione di una classe java di Callback.

    Detach Header WSSecurity; Aggiunta la possibilità di non effettuare il detach dell’header WSSecurity dopo che la PdD ne ha effettuato la verifica della validità. Il detach è disabilitabile tramite l’opzione ‘detachHeaderWSSecurity=false’.

    Password Callback; La classe di utility org.openspcoop2.security.utils.ExternalPWCallback è stata estesa in modo che attui la risoluzione di variabili Java indicate all’interno del file di proprietà (es. user.${ENV1}=${ENV2}). Inoltre è stato aggiunto il refresh automatico del file di properties ogni minuto; refresh configurabile tramite la proprietà ‘refresh=true/false’.

  • Integrazione SAML con XACMLPolicy; Integrazione della validazione di un’asserzione SAML in WS-Security, tramite l’applicazione di una policy XACML. La validazione può avvenire direttamente sulla Porta di Dominio o utilizzando un Policy Decision Point remoto.

1.7. Miglioramenti alla Console di Gestione

Sono state apportate le seguenti modifiche alla pddConsole:

  • Restyling grafico; Completo restyling grafico della console.

  • Criteri di Sicurezza sulle Password; Aggiunti criteri di sicurezza sulle password delle utenze della console.

  • Stato di una Porta Delegata e Applicativa; Aggiunta la possibilità di disabilitare temporaneamente una fruizione od una erogazione di servizio agendo sul nuovo parametro ‘stato’ presente nella porta delegata e nella porta applicativa.

  • Vincoli sui nomi; Introdotti vincoli sui nomi degli oggetti registrabili:

    • Soggetti: solo lettere e numeri

    • Pdd, Ruoli, Accordi, Servizi, Azioni: NCName

    • Servizi Applicativi, Porte Delegate e Porte Applicative: NCName + carattere ‘/’

  • Runtime; Estesa la sezione ‘Runtime’ al fine di visualizzare le seguenti ulteriori informazioni:

    • lunghezza delle chiavi accettate per la cifratura

    • informazioni sull’internazionalizzazione (Locale)

    • informazioni sul TimeZone

    • possibilità di attivare o disabilitare completamente il servizio ‘porta delegata’ (PD) e/o ‘porta applicativa’ (PA).

    Molti dettagli sulle nuove informazioni aggiunte sono presenti solamente all’interno del file di report scaricabile da questa sezione.

1.8. Bug Fix Protocollo Trasparente

Risolto problema legato alla non corretta interpretazione dell’header di integrazione openspcoop fornito dall’applicativo client in SOAP 1.2.

1.9. Bug Fix Protocollo SPCoop

L’header di Integrazione ‘soap’, in modalità backward compatibility, veniva prodotto con alcune differenze rispetto a quello generato da una versione di OpenSPCoop di generazione 1.x. Gli attributi ‘SPCoopPdd’ e ‘SPCoopPddDetails’ non erano presenti ed al loro posto venivano generati i gli attributi ‘OpenSPCoop2Pdd’ e ‘OpenSPCoop2PddDetails’. La stessa problematica era presente per le modalità di integrazione ‘trasporto’ e ‘urlBased’.

1.10. Bug Fix

Sono state apportati i seguenti bug fix al runtime della Porta di Dominio:

  • MTOM; Corretto un problema nella gestione dei messaggi MTOM. I messaggi in transito venivano erroneamente “sbustati” dal protocollo MTOM ed il messaggio inoltrato al nodo successivo presentava nella SOAPEnvelope il contenuto in base64 dell’allegato, pur continuando a possedere anche l’attachment mtom.

  • SOAPFault FaultCode qualificato;

    Risolto problema che si verificava in presenza di un SOAPFault applicativo contenente un elemento ‘faultcode’ qualificato con un prefisso che non corrispondeva a nessuna dichiarazione di namespace. Un tale SoapFault provocava un errore interno della PdD simile al seguente: “org.openspcoop2.protocol.sdk.ProtocolException: Comprensione stato non riuscita: null”
  • SOAPFault Detail;

    Risolto un problema nella gestione, da parte della PdD, dell’elemento ‘detail’ di un SOAPFault applicativo. Un testo presente direttamente all’interno dell’element ‘detail’ (senza essere contenuto in alcun elemento xml) non veniva correttamente ritornato al client.
  • Handshake SSL;

    Nel caso di fallimento dell’handshake ssl, durante l’utilizzo di un connettore di tipo ‘https’, la transazione andava in errore con un ‘NullPointerException’. Il problema è stato corretto e adesso viene riportata l’eccezione corretta.

Sono state apportati i seguenti bug fix alla Console di Gestione:

  • Connettore HTTPS; Risolto problema nella maschera di configurazione del connettore https che, in alcuni casi, causava il reset dei dati già inseriti durante la compilazione della form.

  • Importa/Esporta;

    Corrette alcuni malfunzionamenti presenti nelle funzionalità ‘Importa’ ed ‘Esporta’ delle configurazioni:
    • l’importazione non abilitava le regole sulla sicurezza del messaggio, se presenti su porte delegate o applicative.

    • Un nome di servizio contenente ‘-‘ o altri caratteri speciali non veniva gestito correttamente. Per correggere questa problematica è stato necessario modificare il formato degli archivi. Rimangono comunque compatibili i vecchi formati.

    • Risolto un problema che si verificava durante l’esportazione di un accordo di servizio parte specifica in formato CNIPA. L’errore che si otteneva era il seguente: “RegistroOpenSPCoopUtilities.setImportLocation error: Riscontrato errore durante la lettura del wsdl: null”