Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
| Entrambe le parti precedenti la revisione Revisione precedente Prossima revisione | Revisione precedente | ||
|
custom:produzione_war_da_progetto_template_custom [2026/04/16 17:42] giorgio.scali |
custom:produzione_war_da_progetto_template_custom [2026/10/20 10:52] (versione attuale) giorgio.scali |
||
|---|---|---|---|
| Linea 12: | Linea 12: | ||
| === Procedura === | === Procedura === | ||
| La prima cosa da fare per creare un progetto di base nel proprio pc cliccare sul seguente link e avviare il download della cartella ZIP, in base alla versione major del progetto da generare: | La prima cosa da fare per creare un progetto di base nel proprio pc cliccare sul seguente link e avviare il download della cartella ZIP, in base alla versione major del progetto da generare: | ||
| + | * {{ :custom:makegproj-4.8.x+(template-1.1.0).zip |}} | ||
| * {{ :custom:makegproj-4.6.x-release.zip |}} | * {{ :custom:makegproj-4.6.x-release.zip |}} | ||
| * {{ :custom:makegproj-4.6.x.zip | makegproj-4.6.x.zip (PRE-RELEASE, @Deprecated)}} | * {{ :custom:makegproj-4.6.x.zip | makegproj-4.6.x.zip (PRE-RELEASE, @Deprecated)}} | ||
| Linea 57: | Linea 58: | ||
| Le modifiche apportate ai vari file dipendono dal progetto, ma anche dall'ambiente in cui il progetto deve essere utilizzato. | Le modifiche apportate ai vari file dipendono dal progetto, ma anche dall'ambiente in cui il progetto deve essere utilizzato. | ||
| + | |||
| + | |||
| + | === Note war versioni 4.8 template-1.1.0 Google baselayers map (issue #1928) === | ||
| + | In attesa del rilascio del template successivo è possibile modificare lo spring-security come parte della issue #1928 | ||
| + | [[https://gitlab.com/geowebframework/geowebframework/-/work_items/1928]]. | ||
| + | E' necessaria anche una versione >= 4.8.2.59 del framework. | ||
| + | Il fix può essere adattato negli spring-security dei repository di commessa, anche a versioni precedenti (4.7.*, etc..) a patto che sia stato riportato indietro anche il fix della issue #1928. | ||
| + | |||
| + | <code md> | ||
| + | ## BUGFIX | ||
| + | * layer di base Google Hybrid/Satellite (OLMapWidget): ridotte le richieste a MaxZoomService (zoom massimo delle | ||
| + | immagini al centro mappa), prima una a ogni spostamento della mappa: | ||
| + | * nessuna richiesta se lo sfondo attivo non e' Google Hybrid o Google Satellite | ||
| + | * risultato in cache per tile (zoom 14): nessuna richiesta nelle aree gia' note | ||
| + | * richieste con debounce di 300 ms: in un pan/zoom continuo si chiede solo la posizione finale | ||
| + | (issue #1929) | ||
| + | |||
| + | </code> | ||
| + | |||
| + | Nello spring-security.xml va sostituita la parte: | ||
| + | |||
| + | <code xml> | ||
| + | <header name="Content-Security-Policy" value="script-src 'self' 'unsafe-inline' 'unsafe-eval'; frame-ancestors 'self'; img-src * data:"/> | ||
| + | </code> | ||
| + | |||
| + | con questa: | ||
| + | |||
| + | <code xml> | ||
| + | <!-- | ||
| + | issue #1928 Content Security Policy: abilitazione dei layer di base Google Maps | ||
| + | |||
| + | PERCHE': i layer "Google Streets/Physical/Satellite/Hybrid" di OLMapWidget caricano la Maps JavaScript API | ||
| + | da un host esterno (https://maps.googleapis.com/maps/api/js). Con "script-src 'self' ..." il browser | ||
| + | blocca lo script (nessun errore evidente: window.google resta undefined e il layer Google non compare). | ||
| + | Non e' un problema della API key: la richiesta non parte nemmeno. | ||
| + | La direttiva script-src riguarda ANCHE gli script JSONP che la libreria Google carica a runtime | ||
| + | (es. https://khm.googleapis.com/mz usato da MaxZoomService per conoscere lo zoom massimo delle immagini | ||
| + | satellitari): ammettere solo maps.googleapis.com NON basta, la mappa si vede ma MaxZoomService | ||
| + | fallisce con status ERROR e le chiamate risultano "503" nel Network di Chrome. | ||
| + | |||
| + | COSA SI AMMETTE (documentazione ufficiale Google, "Content Security Policy Guide" della Maps JavaScript API): | ||
| + | * https://*.googleapis.com : maps.googleapis.com (loader e API), khm/mt/etc.googleapis.com (tile e servizi) | ||
| + | * https://*.gstatic.com : moduli JavaScript della libreria (maps-api-v3/api/js/..) | ||
| + | * https://*.google.com : tile/servizi di Google Maps (maps.google.com ecc.) | ||
| + | * blob: : web worker usati dalla libreria per il rendering | ||
| + | Non serve toccare altre direttive: img-src e' gia' "*" e connect-src/style-src/font-src non sono | ||
| + | limitati (non c'e' default-src). Se in futuro si aggiunge default-src o si restringono img-src / | ||
| + | connect-src, vanno aggiunti anche questi host (e worker-src blob:). | ||
| + | |||
| + | SOLO HTTPS: OLMapWidget carica la libreria sempre in https (anche se l'applicazione e' servita in http, | ||
| + | ad esempio localhost in sviluppo) e la libreria usa lo stesso schema per le richieste successive. | ||
| + | Non vanno quindi inseriti host http://. | ||
| + | |||
| + | SICUREZZA: ogni host aggiunto a script-src puo' eseguire codice nella pagina. Per questo l'elenco e' limitato | ||
| + | ai domini Google strettamente necessari e NON si usa il carattere jolly "*" da solo. | ||
| + | L'abilitazione e' necessaria solo per i progetti che usano layer Google: gli altri progetti possono | ||
| + | tenere la policy piu' restrittiva senza gli host Google. 'unsafe-inline' resta necessario perche' il widget | ||
| + | inserisce uno script inline con la callback di caricamento (googleApiReadyCallback). | ||
| + | |||
| + | NOTA: la policy e' letta da Spring Security all'avvio: dopo la modifica serve il riavvio dell'applicazione, | ||
| + | e nel browser un ricaricamento della pagina (la CSP vale per il documento con cui la pagina e' stata caricata). | ||
| + | Per verificare: nella risposta HTTP della pagina, l'header "Content-Security-Policy" deve contenere gli host sopra. | ||
| + | --> | ||
| + | <header name="Content-Security-Policy" value="script-src 'self' 'unsafe-inline' 'unsafe-eval' https://*.googleapis.com https://*.gstatic.com https://*.google.com blob:; frame-ancestors 'self'; img-src * data:"/> | ||
| + | </code> | ||
| === Note war versioni 4.6.x-release === | === Note war versioni 4.6.x-release === | ||