Piattaforma abilitante
SPID
Sistema Pubblico di Identità Digitale
Lo SPID è una credenziale unica di accesso, con identità verificata, integrabile da siti pubblici e privati.
Intro
SPID (Sistema Pubblico di Identità Digitale) è la soluzione che permette ai cittadini italiani di accedere a tutti i servizi online della Pubblica Amministrazione con un’unica Identità Digitale utilizzabile da computer, tablet e smartphone. Il cittadino può ottenere SPID tramite i Gestori di Identità (detti Identity Provider); una volta completata la procedura di autenticazione il cittadino accede ai Fornitori di Servizi (detti Service Provider).
Vantaggi per il cittadino:
- Un’unica credenziale per tutti i siti pubblici e privati, sicura e facile da ricordare
- Il processo di riconoscimento e rilascio si effettua una volta sola e vale per sempre
- SPID è gratuito
Vantaggi per il Service Provider:
- Certezza dell’identità dell’utente
- Nessuna necessità di gestire un processo di registrazione/riconoscimento, con risparmio dei relativi costi
- Attributi qualificati (data/luogo di nascita, sesso, e-mail, telefono ecc.)
- Altri attributi già popolati dall’utente (indirizzo di residenza ecc.)
L’integrazione di SPID è consentita sia per i siti della Pubblica Amministrazione (che ne beneficiano gratuitamente), sia per i siti e servizi online dei privati (che pagano il servizio). I vantaggi nella sua adozione sono quindi molteplici: le banche e le assicurazioni, per esempio, potrebbero riconoscere il cittadino che vuole creare un conto o stipulare una polizza semplicemente facendogli fare login tramite SPID.
Come diventare Service Provider
- Leggi la documentazione tecnica.
- Usa e contribuisci ai componenti open source che trovi in Developers Italia.
- Usa l’Identity Provider di test per simulare il flusso di autenticazione e verificare che la tua implementazione sia corretta.
- Entra in contatto con gli altri sviluppatori in Slack.
- Segui la procedura di accreditamento descritta nel sito di AGID.
SPID è basato sul protocollo SAML2, quindi l’integrazione può avvenire con molteplici soluzioni:
- integrando direttamente nell’applicazione uno dei tanti SDK nativi presenti in Developers Italia;
- applicando al web server un middleware come Shibboleth;
- aggiungendo un componente esterno di Identity Access Management come ad esempio un Proxy.
In aggiunta, è necessario integrare nel sito il bottone ufficiale “Entra con SPID”, che permette all’utente di selezionare il proprio Identity Provider. L’applicazione del Service Provider genera di conseguenza una AuthnRequest che viene poi inviata all’Identity Provider attraverso un HTTP Redirect o POST del browser.
Il Service Provider deve aggiornare periodicamente i metadati degli Identity Provider in caso di aggiunta, revoca, modifica o aggiornamento del certificato di uno di essi, e deve riportare tale modifica anche nel bottone “Entra con SPID”.
Entra nel forum Dialoga su Slack (#spid) (registrati su Slack)
La community di Developers Italia ha realizzato un’ampia gamma di componenti open source (SDK, esempi di codice) pronti per l’uso, ed inoltre ha sviluppato l’Identity Provider di test. Chiunque può contribuire al miglioramento dei componenti esistenti o aiutare a svilupparne di nuovi. È importante tenere presente che le risorse messe a disposizione della community non sono da intendersi come normative ma solo come supporto informale e di aiuto integrativo per gli sviluppatori.
Risorse
-
Regole Tecniche consolidate
Le regole tecniche di SPID con applicati tutti gli avvisi e le correzioni ai refusi, consultabili comodamente su Docs Italia
-
Metadata degli Identity Provider
Metadata degli Identity Provider, che i Service Provider devono mantenere aggiornati
-
Modulistica, circolari e deliberazioni
Sito di AGID contenente la modulistica, i listini, le convenzioni e le deliberazioni che riguardano SPID
-
SDK per C#
Libreria nativa per l'integrazione di SPID in applicazioni C#
-
SDK per .NET
Libreria nativa per l'integrazione di SPID in applicazioni .NET
-
SDK per Django
Libreria nativa per l'integrazione di SPID in applicazioni Django (Python)
-
SDK per Express.js
Libreria nativa per l'integrazione di SPID in applicazioni Node/Passport (Javascript)
-
SDK per Spring
Libreria nativa per l'integrazione di SPID in applicazioni Java Spring
-
Standalone SPID Proxy
Python Proxy con immagine Docker per abilitare dei SP SAML2 tradizionali in SPID
-
SDK per Ruby
Libreria nativa per l'integrazione di SPID in applicazioni Ruby
-
SDK per Ruby on Rails
Libreria nativa per l'integrazione di SPID in applicazioni Ruby on Rails
-
SDK per Sinatra
Libreria nativa per l'integrazione di SPID in applicazioni Sinatra (Ruby)
-
SDK per Android
Libreria nativa per l'integrazione di SPID in applicazioni mobile Android (Java)
-
SDK per iOS
Libreria nativa per l'integrazione di SPID in applicazioni mobile iOS
-
SDK per PHP
Libreria nativa per l'integrazione di SPID in applicazioni PHP
-
SDK per PHP (basata su SimpleSAMLphp)
Script per l'integrazione di SPID in applicazioni PHP attraverso l'installazione guidata di SimpleSAMLphp
-
SDK per Wordpress
Plugin nativo per l'integrazione del login con SPID in siti Wordpress (PHP)
-
SDK per Laravel
Libreria nativa per l'integrazione di SPID in applicazioni Laravel (PHP)
-
SDK per Symfony
Libreria nativa per l'integrazione di SPID in applicazioni Symfony (PHP)
-
SDK per Drupal
Libreria nativa per l'integrazione di SPID in applicazioni Drupal (PHP)
-
SDK per Perl
Libreria nativa per l'integrazione di SPID in applicazioni Perl
-
SDK per Dancer2
Libreria nativa per l'integrazione di SPID in applicazioni Dancer2 (Perl)
-
SDK per Go
Libreria nativa per l'integrazione di SPID in applicazioni Golang
-
Proxy con Shibboleth
Immagine Docker per creare un proxy basato su Apache2 e Shibboleth
- Esempio di configurazione di Shibboleth con Nginx tramite un playbook Ansible
-
IAM in Python
Applicativo di Identity Access Management compatibile con SPID sviluppato in Python
-
Bottone "Entra con SPID"
Il bottone da inserire nel sito del Service Provider, con integrata la scelta dell'Identity Provider
-
Interfacce grafiche per Identity Provider
Modelli in HTML statico per le interfacce degli Identity Provider
-
Icone, loghi e materiali grafici
Questo repository contiene il logo di SPID, i loghi degli Identity Provider ed altri materiali grafici
-
Bottone "Entra con SPID" (versione smart)
Nuova versione (non ancora ufficiale) del bottone "Entra con SPID", con integrata la scelta dell'Identity Provider
-
Identity Provider di test
Ambiente di test per verificare la rispondenza di un Service Provider alle regole tecniche, eseguibile anche in locale
-
Creazione certificati SAML2
Tool per la creazione di certificati X.509 conformi all'Avviso SPID n.29 v3