
Filament + SPID: abbiamo creato il Package Open Source che porta l'autenticazione della Pubblica Amministrazione nei pannelli Filament
Da giorni e giorni di integrazione a una rapida configurazione: questa è la realtà del nostro nuovo package open source per l'autenticazione SPID (Sistema Pubblico di Identità Digitale) nei pannelli amministrativi Filament. Dopo aver implementato decine di progetti per la Pubblica Amministrazione italiana che richiedevano conformità SPID, abbiamo deciso di condividere con la community la soluzione che abbiamo perfezionato sul campo.
Perché abbiamo creato questo package
Nell’ultimo periodo ci siamo trovati ci siamo trovati di fronte a una sfida ricorrente: integrare l'autenticazione SPID in Filament in svariati progetti Filament che richiedeva ore di lavoro manuale per collegare il package ufficiale italia/spid-laravel.
Il progetto richiedeva conformità totale alle specifiche tecniche AgID, gestione dei tre livelli di sicurezza SPID (SpidL1, SpidL2, SpidL3), personalizzazione della UI per rispettare le linee guida di design della PA, e integrazione seamless con il sistema di autenticazione Filament esistente.
Dopo settimane di sviluppo intenso, avevamo finalmente un'integrazione robusta, type-safe e production-ready che rispettava tutti i requisiti normativi.
La domanda era inevitabile: perché non renderlo disponibile alla Community?
Cos'è SPID e perché Filament
SPID (Sistema Pubblico di Identità Digitale) è il sistema di autenticazione unico per accedere ai servizi online della Pubblica Amministrazione italiana. Con oltre 35 milioni di identità digitali attive, SPID è diventato lo standard de facto per l'accesso ai servizi digitali pubblici e privati in Italia.
Filament, dal canto suo, è il framework per pannelli amministrativi Laravel più apprezzato dalla community per la sua eleganza, produttività e ecosistema di plugin. Unire questi due mondi significa portare l'autenticazione certificata SPID in applicazioni amministrative moderne senza sacrificare developer experience.
I vantaggi concreti dell'integrazione
Setup rapido contro i giorni e giorni di sviluppo manuale per integrazione custom
Conformità garantita alle specifiche tecniche AgID senza studio manuale della documentazione
Zero configurazione infrastrutturale per SAML2: tutto gestito dal package base
italia/spid-laravelUI/UX certificata con bottone SPID ufficiale AgID e dropdown Identity Provider integrato
Type-safe con pieno supporto IDE grazie a definizioni complete e autocomplete
Testing facilitato con Identity Provider di test per development locale
Documentazione completa con esempi pratici e best practices PA
Use Cases Reali: quando usare Filament + SPID
Portali Amministrativi Pubblici
Scenario: Pannello di gestione per dipendenti pubblici con accesso tramite identità digitale.
Implementazione Filament:
Autenticazione SPID obbligatoria per tutti gli utenti amministrativi
Profilazione automatica basata su codice fiscale
Dashboard personalizzate per ruoli PA (dirigenti, funzionari, operatori)
Audit log completo di ogni accesso conforme a normativa trasparenza
Benefici misurabili:
Conformità GDPR e CAD (Codice Amministrazione Digitale) nativa
Eliminazione gestione credenziali custom (zero password da gestire)
Onboarding istantaneo per nuovi dipendenti già dotati di SPID
Sistemi Gestionali per Consorzi
Scenario: CRM per consorzio di comuni con accesso federato tra enti.
Implementazione Filament:
Login SPID con selezione automatica Identity Provider preferito
Sincronizzazione dati anagrafici da attributi SPID certificati
Multi-tenancy per separazione logica dati per singolo comune
Integrazione API terze parti (ANPR, PagoPA) con identità SPID come chiave
Benefici misurabili:
Riduzione costi gestione credenziali del 90%
Interoperabilità nativa tra sistemi diversi enti
Fiducia utente aumentata grazie a standard nazionale riconosciuto
Piattaforme Healthcare
Scenario: Pannello amministrativo per strutture sanitarie con accesso operatori.
Implementazione Filament:
Autenticazione SPID livello 2 (SpidL2) per operatori sanitari
Gestione pazienti con verifica identità via codice fiscale SPID
Dashboard referti con tracciabilità accessi conforme privacy
Integrazione FSE (Fascicolo Sanitario Elettronico)
Benefici misurabili:
Conformità normativa sanitaria automatica
Audit trail completo per ispezioni e verifiche
Sicurezza dati sensibili con autenticazione certificata
FAQ: Risposte alle domande più frequenti
Come integrare SPID in un pannello Filament esistente?
L'integrazione richiede quattro step fondamentali:
Installare il package via Composer:
composer require offline-agency/filament-spid
Pubblicare configurazione e asset:
php artisan vendor:publish --tag="filament-spid-config"
php artisan vendor:publish --tag="filament-spid-migrations"
php artisan migrate
Configurare il package base italia/spid-laravel seguendo la documentazione ufficiale per generare certificati SAML2 e configurare i metadata del Service Provider.
Registrare il plugin nel Panel Provider:
use OfflineAgency\FilamentSpid\SpidPlugin;
public function panel(Panel $panel): Panel
{
return $panel
->plugin(
SpidPlugin::make()
->spidButtonLabel('Entra con SPID')
->providers(['posteid', 'arubaid', 'infocertid'])
);
}
A questo punto, il bottone SPID appare automaticamente nella schermata di login di Filament.
Per applicazioni con autenticazione esistente, consigliamo un approccio ibrido: mantenere autenticazione classica per utenti non PA e abilitare SPID come metodo alternativo o obbligatorio per specifici ruoli.
Quali Identity Provider SPID sono supportati?
Il package supporta tutti i 9 Identity Provider SPID certificati AgID:
Aruba ID (arubaid)
Infocert ID (infocertid)
Lepida ID (lepidaid)
Namirial ID (namirialid)
Poste ID (posteid)
Sielte ID (sielteid)
SpidItalia (spiditalia)
TIM ID (timid)
TeamSystem ID (teamsystemid)
È possibile configurare quali Identity Provider mostrare nel dropdown tramite il metodo providers():
SpidPlugin::make()
->providers(['posteid', 'arubaid']) // Solo Poste e Aruba
Se non specificato, vengono mostrati tutti gli Identity Provider certificati. È inoltre possibile abilitare l'Identity Provider di test per development locale modificando la configurazione del package base italia/spid-laravel.
Come funzionano i livelli di sicurezza SPID (Spid L1, L2, L3)?
SPID definisce tre livelli di sicurezza crescenti:
SpidL1 - Livello 1
Autenticazione con username e password
Adatto per servizi a basso rischio
Esempio: consultazione orari trasporti pubblici
SpidL2 - Livello 2 (Default consigliato)
Autenticazione con username, password e OTP (One-Time Password)
Richiesto per la maggioranza dei servizi PA
Esempio: accesso fascicolo sanitario, prenotazione servizi comunali
SpidL3 - Livello 3
Autenticazione con smart card o token hardware
Necessario per operazioni ad alto rischio
Esempio: firma digitale documenti, transazioni finanziarie
Il livello predefinito è configurabile nel file config/filament-spid.php:
'spid_level' => 'https://www.spid.gov.it/SpidL2',
Per progetti PA standard, SpidL2 rappresenta il compromesso ottimale tra sicurezza e user experience.
Il package Filament-SPID è adatto per applicazioni in produzione?
Assolutamente sì. Il package è nato dall'esperienza concreta su progetti per enti pubblici italiani e incorpora best practices production-ready:
Basato su
italia/spid-laravel, il package ufficiale AgID mantenuto dalla community open source italianaConformità alle specifiche tecniche AgID verificata tramite suite di test automatizzati
Gestione completa del ciclo di vita SAML2 (AuthN Request, Response, Logout)
Sicurezza hardened con validazione certificati X.509, protezione replay attacks, gestione timeout sessione
Supporto Laravel 10, 11, 12 e Filament 3.x, 4.x per massima compatibilità
Test suite completa con coverage >85% per garantire stabilità
Offline Agency è contributor attivo del package base italia/spid-laravel, collaborando direttamente con AgID e la community per miglioramenti e bugfix.
Quali sono i requisiti minimi per utilizzare Filament-SPID?
Requisiti Software:
PHP 8.3 o superiore
Laravel 11.x o 12.x
Filament 3.x o 4.x
Composer 2.x con patching abilitato (composer config extra.enable-patching true)
Requisiti Infrastrutturali:
Certificato SSL/TLS valido obbligatorio (SPID richiede HTTPS)
Database relazionale con campi fiscal_code (codice fiscale) e spid_data (JSON attributi SPID) nella tabella users
Storage per certificati SAML2 (X.509 Service Provider)
Dominio pubblico raggiungibile per metadata SAML2 (endpoint /spid/metadata)
Configurazione SPID AgID:
Generazione coppia chiave/certificato per firma SAML2 (il package base fornisce utility automatiche)
Registrazione Service Provider presso AgID (solo per produzione)
Configurazione metadata in config/spid-auth.php (EntityID, Organization, Attributes richiesti)
Conoscenze Team:
Esperienza Laravel intermedia
Familiarità Filament base (Panels, Resources)
Comprensione concetti SPID (Identity Provider, attributi certificati, livelli sicurezza)
Lettura documentazione AgID consigliata ma non obbligatoria (il package astrae la complessità)
Risorse Utili
Repository GitHub: https://github.com/offline-agency/filament-spid
Package Base italia/spid-laravel: https://github.com/italia/spid-laravel
Documentazione AgID SPID: https://docs.italia.it/italia/spid/
Registry Identity Provider: https://registry.spid.gov.it/identity-providers
About the Authors
OFFLINE AGENCY è un'agenzia di sviluppo specializzata in soluzioni per Pubbliche Amministrazioni e aziende che affrontano la complessità della trasformazione digitale con approccio pragmatico e scalabile.
Tech Lead: Giacomo Fabbian, Lead Developer con 12+ anni di esperienza in sviluppo Laravel, contributor attivo dell'ecosistema Laravel e Filament, speaker a conferenze nazionali su PA digitale.
Vuoi collaborare con noi su progetti PA innovativi? Siamo sempre alla ricerca di sfide che spingono i confini del digitale pubblico.