Menu

Developers Italia Sviluppiamo i servizi pubblici, insieme

Seguici su
Piattaforma abilitante

SPID

Sistema Pubblico di Identità Digitale

Lo SPID è una credenziale unica di accesso, con identità verificata, integrabile da siti pubblici e privati.

SPID

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

  1. Leggi la documentazione tecnica.
  2. Usa e contribuisci ai componenti open source che trovi in Developers Italia.
  3. Usa un Identity Provider di test come spid-saml-check oppure spid-testenv2 per simulare il flusso di autenticazione e verificare che la tua implementazione sia corretta.
  4. Entra in contatto con gli altri sviluppatori in Slack.
  5. Segui la procedura di accreditamento descritta nel sito di AGID.

SPID è basato sul protocollo SAML2, per configurarlo è possibile scegliere una tra le molteplici soluzioni disponibili:

  • integrando direttamente nell’applicazione uno dei tanti SDK nativi presenti in Developers Italia;
  • applicando al web server Apache un middleware come Shibboleth Service Provider;
  • aggiungendo un componente esterno di Identity Access Management come ad esempio un Proxy.

È necessario inoltre 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”. I metadati degli Identity Provider sono disponibili presso lo SPID registry.

Come contribuire

La community di Developers Italia ha realizzato un’ampia gamma di componenti open source (SDK, esempi di codice, IAM Proxy, tools) pronti per l’uso. 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, esempio e aiuto integrativo per gli sviluppatori.

Canali

Entra nel forum Dialoga su Slack (#spid) (registrati su Slack)

Risorse

  • IdentityPython SATOSA

    Python Proxy con immagine Docker per abilitare dei SP SAML2 tradizionali in SPID

  • Keycloak

    Keycloak OIDC to SAML2 SPID Proxy

  • Proxy con Shibboleth

    Immagine Docker per creare un proxy basato su Apache2 e Shibboleth

  • IAM in Python

    Applicativo di Identity Access Management compatibile con SPID sviluppato in Python

torna all'inizio dei contenuti