Siti comunali per la misura 1.4.1 del PNRR
Con I.T.Svil (si apre in una nuova scheda) ho lavorato su due siti comunali in Drupal 9 e li ho portati all'asseverazione della misura 1.4.1 del PNRR, «Esperienza del cittadino nei servizi pubblici», in un anno. Il racconto tecnico completo, dall'asseverazione all'accesso unico con SPID e CIE, è nell'articolo collegato.
Chi sviluppa Siti comunali per la misura 1.4.1 del PNRR, e da quando
Con che cosa è costruito Siti comunali per la misura 1.4.1 del PNRR
Quale problema risolve Siti comunali per la misura 1.4.1 del PNRR
I due Comuni avevano un sito Drupal con una struttura dei contenuti diversa da quella del modello Comuni, e i servizi online, pagamenti pagoPA, istanze e prenotazioni, su una piattaforma Maggioli separata, con un accesso a parte.
Come Siti comunali per la misura 1.4.1 del PNRR risolve il problema
Refactoring dei tipi di contenuto sul modello e migrazione dei contenuti con uno script custom; schede dei servizi Maggioli lette dalle loro API; tuning e cache per le prestazioni; accesso e uscita unici fra sito e piattaforma, con un modulo Drupal scritto da zero, Shibboleth come Service Provider in un container dietro Traefik e il codice fiscale come sola chiave dell'utente; formazione delle redazioni su contenuti ed eventi.
Che risultati ha dato Siti comunali per la misura 1.4.1 del PNRR
Due Comuni portati alla misura 1.4.1 in un anno di lavoro; l'accesso unico con SPID e CIE è stato completato nel 2025.
Da dove partivano i due siti
I due Comuni avevano già un sito in Drupal, con una struttura dei contenuti molto diversa da quella del modello Comuni. I servizi online stavano sulla piattaforma Maggioli, con un accesso a parte: il cittadino li cercava fuori dal sito del Comune e si autenticava una seconda volta.
La misura 1.4.1 finanzia i Comuni dopo un'asseverazione, cioè una verifica dei criteri di conformità del modello di Designers Italia. Molti criteri riguardano la struttura: le voci del menu di primo livello nell'ordine del modello, i titoli delle pagine di secondo livello, gli argomenti presi dal vocabolario europeo EuroVoc, le voci obbligatorie di ogni scheda di servizio. Su quei due siti toccavano quasi ogni pagina.
Che cosa ho fatto sui due siti
- Contenuti: ho rifatto i tipi di contenuto e i vocabolari secondo le tipologie del modello Comuni di Designers Italia, e ci ho migrato i contenuti esistenti con uno script custom.
- Tema: la base è
bootstrap_italiaper Drupal, con un sottotema che porta gli stili del modello Comuni. - Servizi: pagamenti pagoPA, istanze e pratiche, prenotazione degli appuntamenti della piattaforma Maggioli (si apre in una nuova scheda) hanno la loro scheda sul sito del Comune, letta dalle API di Maggioli.
- Prestazioni: tuning e cache, per servire le pagine già pronte e tenerle sopra la soglia di Lighthouse chiesta dal modello.
- Accesso unico: chi entra da un sito è già dentro l'altro, e chi esce da uno esce da entrambi, con un logout remoto presso il provider.
- SPID e CIE: un intermediario di autenticazione esterno verifica l'identità, Shibboleth chiude il flusso, e il modulo che ho scritto trova o crea l'utente Drupal dal codice fiscale.
- Redazioni: ho seguito le amministrazioni in diverse fasi formative, soprattutto sulla creazione dei contenuti e sulla gestione degli eventi.
Come ho migrato i contenuti
Il modello definisce le tipologie: servizi, uffici, documenti, notizie, eventi, luoghi, persone dell'amministrazione, ciascuna con i suoi campi e i suoi collegamenti. Ho creato in Drupal i tipi di contenuto e i vocabolari corrispondenti, poi uno script custom ha riorganizzato sopra di essi i contenuti esistenti.
Ricablare la struttura è stata la parte complessa, perché cambiavano insieme tipi, campi, vocabolari, alberatura del menu e collegamenti fra le pagine. Un vecchio articolo poteva diventare una notizia, un documento o la pagina di un ufficio, a seconda di che cosa raccontava. Le regole di smistamento stavano tutte nello script, e si correggevano e si rieseguivano in un posto solo.
Come arrivano sul sito i servizi Maggioli
I servizi li eroga la piattaforma Maggioli, che ne sincronizza ed espone le schede attraverso le sue API. Il sito del Comune consulta quelle API e presenta ogni servizio con la scheda chiesta dal modello, compreso il tempo massimo di risposta dell'amministrazione. L'azione vera, pagare, presentare una domanda, prenotare, porta sulla piattaforma.
Il catalogo dei servizi resta così nel posto che li eroga, e il cittadino parte dal sito del Comune per arrivare al servizio.
Come è fatto l'accesso unico
| Pezzo | Ruolo |
|---|---|
| Traefik | instrada le richieste di autenticazione al container prima di passarle a Drupal |
| Shibboleth SP | in un container dedicato: conclude il flusso SAML, e il suo cookie di sessione si legge solo lì |
| Intermediario di autenticazione | gestisce SPID e CIE |
| Modulo Drupal custom | riceve l'identità, usa il codice fiscale come chiave, apre e chiude la sessione |
Il modulo è scritto da zero perché i moduli esistenti, spid e samlauth, presuppongono che Drupal parli direttamente con il fornitore dell'identità, mentre qui Drupal stava alla fine di una catena e la sessione doveva valere anche sulla piattaforma Maggioli.
L'uscita vale nei due sensi come l'accesso. La specifica di Maggioli la chiede a chi attiva l'accesso unico, perché una sessione rimasta aperta su un computer condiviso espone dati personali. Per riconoscere l'utente il sito usa il solo codice fiscale: un dato tenuto in meno è un dato in meno da proteggere.
Questa parte ci ha occupati per buona parte del 2025, per il numero di sistemi da far parlare fra loro. Il lavoro è filato liscio, perché la documentazione di Maggioli sull'integrazione delle API era chiara ed esaustiva.
Come i due siti restano sopra la soglia di Lighthouse
Il criterio C.SI.4.1 chiede almeno 50 punti di Lighthouse, in modalità mobile, su tutte le pagine del sito; sotto quella soglia il Comune pubblica un piano di miglioramento. Sui due siti abbiamo fatto tuning e lavorato sulla cache, per servire le pagine già pronte, comprese quelle che leggono i servizi dalle API Maggioli.
Con chi ho lavorato
Il progetto l'ho fatto con I.T.Svil (si apre in una nuova scheda). Dall'altra parte c'erano Maggioli, con la piattaforma dei servizi e la sua documentazione, e le redazioni dei Comuni. Lo staff che ha seguito la formazione era competente, e le sessioni sono andate tutte sulle regole del modello: quale tipologia usare, come scrivere la scheda di un servizio, come gestire un evento con date, luogo e collegamento all'ufficio che lo organizza.
Che cosa cambia per un progetto nuovo
Drupal 9 è fuori supporto dal 1 novembre 2023, quindi oggi si parte da Drupal 10 o 11, con una versione di bootstrap_italia che li supporta. E dalla revisione del 28 marzo 2025 della specifica Maggioli l'accesso con la CIE passa da OpenID Connect: il ponte dell'accesso unico va progettato su quel flusso.
Fonti
Tutte le fonti sono state consultate il 1 ottobre 2026.
- Criteri di conformità del modello di sito comunale (si apre in una nuova scheda), Designers Italia. Fonte primaria.
- Integrazione Sportello telematico – sito istituzionale, rev. 6 (PDF) (si apre in una nuova scheda), Maggioli, 28/03/2025. Fonte primaria.
- PA Website Validator NG (si apre in una nuova scheda), Developers Italia. Fonte primaria.
- Modulo
spid(si apre in una nuova scheda) e modulosamlauth(si apre in una nuova scheda), drupal.org. Fonte primaria. - Drupal 9 end of life (si apre in una nuova scheda), drupal.org. Fonte primaria.
- Bootstrap Italia per Drupal (si apre in una nuova scheda), drupal.org. Fonte primaria.
- Il lavoro sui due siti con I.T.Svil. Esperienza dell'autore.
Questo contenuto è stato prodotto dall'AI e rivisto da una persona.
Come è stata usata l'AI?
Le bozze sono prodotte con l'assistenza dell'AI, poi dirette, rivedute e verificate da una persona. Numeri, date e versioni sono confrontati con le fonti pubbliche prima della pubblicazione, e la data di quel controllo è indicata nel testo.