GovPay 3.9.3
Rliascio versione 3.9.3
Sommario
Release di consolidamento tecnologico.
Il cambiamento principale è la migrazione del reactor principale a Spring Framework 7.x e Spring Security 7.x (issue #869), accompagnata dal bump di CXF a 4.2 (baseline Jakarta EE 11) e dall'aggiornamento di ~30 dipendenze a versioni minor/patch stabili (Jackson, Jersey, HttpClient5, Nimbus JOSE JWT, Log4j, Swagger, PostgreSQL driver e l'intera famiglia Apache Commons).
Inclusi una serie di fix legati al deploy su Tomcat 11 con la nuova baseline Spring Security, miglioramenti di pipeline (cache OWASP versionata in base al plugin) e correzioni di qualità Sonar.
Nessuna modifica di schema database. Nessun cambio di contratto API.
⚠ Breaking changes e note di migrazione
File spring-sec/*-applicationContext-security.xml personalizzati — azione richiesta
In Spring Security 7 l'elemento XML <global-method-security> è stato rimosso (era deprecato dalla 5.6).
Se la propria installazione ha mantenuto modifiche locali ai file spring-sec/*-applicationContext-security.xml (es. per attivare/disattivare schemi di autenticazione commentando i blocchi BASIC_GOVPAY_PROVIDER_START/END, OAUTH2_START/END, ecc.) non basta sostituire i WAR: il deploy fallirà con
NoClassDefFoundError: org/springframework/security/access/annotation/SecuredAnnotationSecurityMetadataSource
Procedura di aggiornamento dei propri XML personalizzati:
- Aprire ciascuno dei 5 file
*-applicationContext-security.xmlin uso (api-backoffice, api-pagopa, api-pendenze, api-ragioneria, api-user). - Localizzare il blocco:
<global-method-security secured-annotations="enabled"> </global-method-security>
- Sostituirlo con:
<method-security secured-enabled="true" pre-post-enabled="false"/>
- Verificare che gli schemi di autenticazione attivi/disattivi (i blocchi commentati
*_START/*_END) siano stati riportati identici dalla configurazione precedente.
Il comportamento a runtime è invariato: secured-enabled="true" mantiene @Secured attiva e pre-post-enabled="false" mantiene @PreAuthorize/@PostAuthorize disattivate, esattamente come nella vecchia configurazione. Nel codebase di GovPay nessuna annotation di method security è in uso, quindi l'effetto pratico è nullo, ma la sintassi XML è obbligatoriamente da migrare.
Spring Framework 7 / Spring Security 7 (Issue #869)
Aggiornata la baseline runtime:
| Componente | Da | A |
|---|---|---|
| Spring Framework | 6.2.17 | 7.0.8 |
| Spring Security | 6.5.9 | 7.1.0 |
| Spring LDAP | 3.3.3 | 4.1.0 |
| Apache CXF | 4.1.3 | 4.2.2 |
| CXF XJC runtime | 4.1.0 | 4.2.0 |
Impatti operativi:
- Java 17 minimo (govpay è già su Java 21 — nessuna azione).
- Container target: Tomcat 11 / Wildfly 36+ (baseline Jakarta EE 11). I deployment su Tomcat 10.x non sono più supportati.
spring-jclrimosso dalle dipendenze: il bridging commons-logging è già fornito dalog4j-jcl.- Spring Security 7 default-deny: le richieste HTTP che ricadono fuori da qualsiasi filter chain (
<http pattern="…">) ora restituiscono 403 invece di passare senza filtri. Verificare eventuali health-check o probe che colpiscono URL root: usare gli endpoint applicativi (es./rs/basic/v1/info). <global-method-security>rimosso da Spring Security 7: nei filespring-sec/*-applicationContext-security.xmlsostituito con<method-security secured-enabled="true" pre-post-enabled="false"/>. Comportamento invariato (nessuna annotation@Secured/@PreAuthorizenel codebase).
Jackson
Rimane sulla linea 2.x (2.22.0). L'upgrade a Jackson 3.x è stato volutamente disaccoppiato per via dell'impatto a cascata su CXF/Swagger/Jersey/OpenSPCoop2 (cambio di package da com.fasterxml.jackson a tools.jackson); verrà tracciato in una release dedicata.
Database
Nessuna patch SQL prevista per 3.9.3 — zero modifiche di schema.
🔒 Sicurezza e aggiornamenti
Spring & ecosistema
| Componente | Da | A |
|---|---|---|
| Spring Framework | 6.2.17 | 7.0.8 |
| Spring Security | 6.5.9 | 7.1.0 |
| Spring LDAP | 3.3.3 | 4.1.0 |
| Apache CXF | 4.1.3 | 4.2.2 |
| CXF XJC runtime | 4.1.0 | 4.2.0 |
| Nimbus JOSE JWT | 10.4.2 | 10.9.1 |
Jackson, Jersey, HTTP, JSON
| Componente | Da | A |
|---|---|---|
| Jackson core/databind/annotations | 2.21.1 | 2.22.0 |
| Jersey | 3.1.11 | 3.1.12 |
| HttpClient5 | 5.5 | 5.6.1 |
| Swagger v3 core | 2.2.36 | 2.2.51 |
| Swagger parser v3 | 2.1.32 | 2.1.44 |
| Swagger codegen plugin | 3.0.71 | 3.0.81 |
| Webjars Swagger UI | 5.20.1 | 5.32.6 |
| Log4j | 2.25.4 | 2.26.0 |
| SnakeYAML | 2.5 | 2.6 |
| Guava | 33.4.8-jre | 33.6.0-jre |
| Javassist | 3.30.2-GA | 3.31.0-GA |
| networknt json-schema-validator | 1.5.6 | 1.5.9 |
| json-path | 2.9.0 | 2.10.0 |
Apache Commons (intera famiglia)
| Componente | Da | A |
|---|---|---|
| commons-csv | 1.14.0 | 1.14.1 |
| commons-codec | 1.19.0 | 1.22.0 |
| commons-io | 2.20.0 | 2.22.0 |
| commons-text | 1.14.0 | 1.15.0 |
| commons-lang3 | 3.18.0 | 3.20.0 |
| commons-pool2 | 2.12.1 | 2.13.1 |
| commons-net | 3.12.0 | 3.13.0 |
Jakarta / driver / build
| Componente | Da | A |
|---|---|---|
| jakarta-xml-ws-api | 4.0.2 | 4.0.3 |
| jakarta-saaj-impl | 3.0.4 | 3.0.6 |
| ant | 1.10.15 | 1.10.17 |
| jaxen | 2.0.0 | 2.0.6 |
| zxing javase | 3.5.3 | 3.5.4 |
| PostgreSQL driver | 42.7.7 | 42.7.11 |
| OWASP dependency-check plugin | 12.2.0 | 12.2.2 |
Scartati in 3.9.3
Tenute fuori versioni non stabili o major jump rischiosi: angus-mail 2.1.0-M1, jakarta.mail/activation/servlet milestone, groovy 2.6.0-alpha-4, slf4j 2.1.0-alpha1, jaxb 3.1.0-M1, rhino 1.9.1 (major jump).
🛠 Infrastruttura e Build
Cache OWASP Dependency-Check versionata per plugin
La chiave di cache su GitHub Actions passa da ${{ runner.os }}-owasp-${{ github.sha }} (invalidata ad ogni commit) a ${{ runner.os }}-owasp-v<plugin-version>-<date>. Beneficio: la cache vive un'intera giornata e viene invalidata automaticamente al bump del plugin, evitando lo schema-mismatch del DB embedded. In maven.yml aggiunto NOUPDATE_FLAG=-DautoUpdate=false quando la cache giornaliera è calda. In refresh-owasp-db.yml allineato lo scarico della CLI dependency-check alla versione del plugin (era hardcoded 12.1.0) e aggiornato il repo di download da jeremylong/DependencyCheck a dependency-check/DependencyCheck.
owasp.plugin.autoUpdate=true di default
Riportato a true dopo aver risolto i problemi del repository NIST. Il bump dello schema del DB embedded richiede l'autoUpdate; in caso di problemi temporanei lato NVD si può sempre fare override puntuale via CLI con -Dowasp.plugin.autoUpdate=false.
📦 Componenti aggiuntivi — versioni minime
Invariati rispetto a 3.9.2.p1. Per il dettaglio fare riferimento alle Release Notes 3.9.2.
| Componente | Versione minima |
|---|---|
| CORE (GovPay) | 3.9.3 |
| BATCH-ACA | 1.2.3 |
| BATCH-FR | 1.1.5 |
| BATCH-RT | 1.0.3 |
| BATCH-IBAN | 1.0.2 |
| BATCH-MAGGIOLI | 1.0.3 |
| BATCH-NOTIFICHE | 1.0.2 |
| API-PORTALE | 1.1.12 |
| API-STAMPE | 1.2.4 |
| API-GDE | 1.1.3 |
| LIB-BOM | 1.1.4 |
| LIB-COMMON | 1.1.2 |
| PORTAL APP | 5.1.0 |
🔗 Riferimenti
- Issue #869 (migrazione Spring 7): #869
- Release notes 3.9.2: RELEASE_NOTES_3.9.2.md
- Release notes 3.9.2.p1: RELEASE_NOTES_3.9.2.p1.md
- Documentazione: https://govpay.readthedocs.io/it/master/
- Repository: https://github.com/link-it/govpay
- Issue tracker: https://github.com/link-it/govpay/issues
Full Changelog: 3.9.2.p1...3.9.3