.Blog

Modulo di Autenticazione SPID per Drupal 8

Modulo di Autenticazione SPID per Drupal 8

In Wellnet abbiamo spesso integrato Drupal con diversi sistemi di autenticazione esterna, dai server LDAP (Lotus e Active Directory) all’IDM della Regione Sardegna passando per il CAS utilizzato dall’Università Statale di Milano. Alla lista, adesso, si aggiunge anche il cosiddetto SPID.

Che cos’è e come è fatto lo SPID?

Il governo italiano ha da qualche anno messo in piedi un sistema di autenticazione centralizzato pensato per eliminare la necessità di registrarsi ad ogni singolo servizio che la pubblica amministrazione offre online ai cittadini e alle aziende. Il Sistema Pubblico di Identità Digitale (SPID), è la soluzione che permette di accedere a tutti i servizi online della Pubblica Amministrazione con un'unica Identità Digitale (username e password) utilizzabile da computer, tablet e smartphone.

L'architettura di SPID si compone di due sistemi principali: 

  • il Service Provider, che fornisce uno o più servizi al cittadino, a fronte di un'autenticazione esterna
  • gli Identity Provider, che certificano e autenticano il cittadino stesso

In questo modo, le credenziali del cittadino rimangono al sicuro sui server dell'Identity Provider, mentre ai Service Provider arrivano solo i dati necessari per gestire i servizi erogati, ad esempio il codice fiscale, l’indirizzo email o il domicilio.

Login con SPID

Come funziona SPID?

SPID si basa su SAML versione 2, un protocollo di comunicazione piuttosto complesso perché, come tutti i sistemi di autenticazione, deve garantire la sicurezza dei dati che gestisce. SPID richiede oltretutto che i Service Provider siano configurati seguendo delle regole molto rigide per essere compatibili al 100% con il sistema. Esistono diverse librerie Open Source, anche in PHP, per interagire con un server SAML che però vanno configurate e personalizzate ad hoc per potersi interfacciare con SPID.

Eliminare la necessità che ogni singolo fornitore di servizi debba scegliere tra le diverse librerie e imparare come installarle e configurarle è uno degli obiettivi che l’AgID si è data per estendere sempre di più il bacino di servizi compatibili con SPID.

Come funziona il modulo SPID per Drupal 8 di Wellnet

La versione del modulo SPID per Drupal 8 sviluppata da Wellnet è stata scelta da AgID come l’implementazione di riferimento per tutti i siti che utilizzano questo CMS.

Il modulo si basa sulla libreria Open Source onelogin che implementa tutte le funzionalità necessarie per trasformare un sito Drupal in un Service Provider a tutti gli effetti. L'installazione è semplice e veloce, basta aggiungere un paio di righe nel file composer.json del proprio sito web. La configurazione è altrettanto immediata, il modulo è preconfigurato per integrarsi con i diversi Identity Provider, così come tutti i parametri SAML necessari al funzionamento con SPID sono già impostati al valore corretto.

Possiamo ad esempio scegliere quali Identity Provider abilitare, o se usare e configurare un Identity Provider di test, utile durante le fasi di sviluppo del sito:

Configurazione IDP

Oppure possiamo mappare gli attributi degli utenti, così come ricevuti da SPID, direttamente su uno dei campi dell'entità User in Drupal (il CodiceFfiscale e la Mail sono già mappati di default sul nome utente e sul campo mail, rispettivamente):

Mapping dei campi utente

Le configurazioni possibili sono molteplici, così come le integrazioni lato codice sono diverse e consentono di reagire alla creazione di un nuovo utente e di stampare il bottone SPID dove meglio si crede all'interno delle proprie pagine web.

Il modulo si trova su drupal.org all'indirizzo www.drupal.org/project/spid ma è presente anche sul repositoy Github dell'AgID. Per chi volesse vedere tutto il sistema in azione abbiamo messo online un ambiente di demo sul quale è possibile autenticarsi su un sito Drupal 8 usando un Identity Provider di test compatibile al 100% con SPID.

spid.wellnet.it

Per qualsiasi dubbio o necessità non coperta dal modulo attuale non esitate a contattarci.

SPID per Node.js

Ma perché limitarsi a Drupal? Data la nostra esperienza in sistemi di autenticazione e in particolare con SPID, abbiamo contribuito anche allo sviluppo dell'integrazione con Passport, la libreria di autenticazione più usata per Node.js. Il codice si può scaricare su GitHub e presto verrà rilasciata anche su NPM, il repository ufficiale dei pacchetti Node.js.