Filament + SPID: package open source di Offline Agency
Ricerca & Innovazione Pubblica Amministrazione

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-laravel

  • UI/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:

  1. Installare il package via Composer:

composer require offline-agency/filament-spid

  1. Pubblicare configurazione e asset:

php artisan vendor:publish --tag="filament-spid-config"

php artisan vendor:publish --tag="filament-spid-migrations"

php artisan migrate

  1. Configurare il package base italia/spid-laravel seguendo la documentazione ufficiale per generare certificati SAML2 e configurare i metadata del Service Provider.

  2. 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 italiana

  • Conformità 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

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.

Contattaci