Plugin SPID CIE e CNS

Plugin SPID CIE e CNS per WordPress

Plugin SPID, CIE e CNS per WordPress

Plugin SPID, CIE e CNS per WordPress integra in un unico progetto tre sistemi di identità digitale: SPID tramite SAML, CIE tramite OIDC Federation e CNS tramite certificato X.509 con mutual TLS.

Ho sviluppato DB Solution – SPID, CIE & CNS partendo da un’esigenza concreta: permettere a WordPress di gestire differenti modalità di autenticazione digitale senza trattarle come se fossero la stessa tecnologia.

Perché SPID, CIE e CNS vengono spesso messi uno accanto all’altro. Dal punto di vista dell’utente il risultato può sembrare simile — identificarsi per accedere a un servizio — ma dietro quel pulsante ci sono architetture e protocolli differenti.

Ed è proprio lì che il progetto diventa interessante.

Un plugin WordPress per SPID, CIE e CNS, non tre pulsanti di login

La parte visibile è semplice.

L’utente trova le modalità di accesso disponibili e sceglie quella che vuole utilizzare.

Dietro, però, DB Solution – SPID, CIE & CNS mantiene tre percorsi di autenticazione distinti:

Identità digitaleIntegrazione
SPIDSAML
CIEOIDC Federation
CNSCertificato client X.509 / mutual TLS

Questa distinzione è alla base dell’intero sviluppo. 

readme.txt

Non volevo costruire un’interfaccia che desse soltanto l’impressione di supportare tre sistemi. Volevo che WordPress potesse gestire correttamente le caratteristiche tecniche di ciascuno.

Plugin SPID WordPress: autenticazione tramite SAML

Il primo percorso riguarda SPID, il Sistema Pubblico di Identità Digitale.

Nel plugin l’integrazione SPID utilizza SAML, mantenendo quindi separato il flusso di autenticazione da quello utilizzato per CIE. 

readme.txt

Questo è un punto importante anche quando si cerca un plugin SPID per WordPress.

Aggiungere un pulsante “Entra con SPID” è la parte facile.

La vera integrazione riguarda ciò che succede prima e dopo quel clic: WordPress deve inserirsi all’interno di un processo di autenticazione federata e gestire correttamente il risultato dell’identificazione.

Per questo ho trattato SPID come un vero modulo di autenticazione e non come una semplice personalizzazione del login WordPress.

Plugin CIE WordPress: OIDC Federation

La Carta d’Identità Elettronica ha un proprio percorso.

DB Solution – SPID, CIE & CNS integra CIE tramite OIDC Federation

readme.txt

Quindi:

SPID → SAML

CIE → OIDC Federation

Può sembrare una distinzione puramente tecnica, ma è esattamente il contrario: mantenere separati i due flussi permette al plugin di non nascondere dietro un’unica etichetta tecnologie differenti.

È anche uno dei motivi per cui ho deciso di sviluppare un’unica soluzione WordPress capace di coordinare più sistemi di identità digitale, lasciando però a ciascuno la propria logica.

Plugin CNS WordPress: autenticazione tramite certificato

Con la Carta Nazionale dei Servizi cambia nuovamente lo scenario.

Qui non siamo né nel flusso SAML utilizzato per SPID né nell’OIDC Federation di CIE.

Il modulo CNS utilizza un certificato client X.509 verificato dal web server tramite mutual TLS (mTLS)

readme.txt

Ed è proprio sulla CNS che ho preferito adottare un comportamento particolarmente prudente.

Il modulo è infatti disabilitato per impostazione predefinita.

Non basta attivare un’opzione nel pannello WordPress e sperare che il resto funzioni.

CNS e sicurezza: se il server non verifica, WordPress non autentica

Per il modulo CNS ho scelto una logica fail-closed.

In pratica, se il server non dichiara che la verifica SSL del certificato client è avvenuta correttamente oppure non rende disponibile a PHP il certificato verificato, il plugin non procede con l’autenticazione

readme.txt

Preferisco un accesso che non funziona a un accesso che funziona quando non dovrebbe.

Una volta ricevuto il certificato già verificato dal server, DB Solution – SPID, CIE & CNS effettua ulteriori controlli, tra cui:

  • validità temporale del certificato;
  • Extended Key Usage TLS clientAuth;
  • policy CNS 1.3.76.16.2.1;
  • presenza del codice fiscale nel Common Name. 

readme.txt

Anche il pulsante CNS segue questa logica: viene mostrato soltanto dopo l’esplicita conferma della configurazione mTLS. 

readme.txt

Non è forse la soluzione più spettacolare da mostrare in uno screenshot.

Ma in un sistema di autenticazione preferisco che la parte interessante sia quella che non si vede.

Perché integrare SPID, CIE e CNS nello stesso plugin WordPress?

Perché il problema non era semplicemente aggiungere un’altra modalità di login.

L’obiettivo era costruire un punto di accesso coerente per WordPress mantenendo, dietro l’interfaccia, tre implementazioni indipendenti.

Questo permette di ragionare sull’identità digitale come parte dell’architettura del progetto e non come una serie di plugin scollegati installati uno sopra l’altro.

Per chi gestisce il sito significa avere un unico progetto WordPress.

Per chi accede significa trovare modalità di autenticazione riconoscibili.

Per lo sviluppatore significa sapere che SPID, CIE e CNS continuano ad avere ciascuno il proprio percorso tecnico.

Non volevo trasformare WordPress in un Identity Provider

Questo è un altro punto progettuale importante.

WordPress rimane WordPress.

DB Solution – SPID, CIE & CNS si occupa dell’integrazione necessaria affinché il CMS possa partecipare ai diversi processi di autenticazione previsti, senza cercare di reinventare i sistemi di identità che stanno a monte.

È una differenza sottile sulla carta, enorme quando si scrive il codice.

Il plugin deve sapere quando intervenire e, soprattutto, quando non deve fidarsi di ciò che riceve.

La gestione CNS ne è probabilmente l’esempio più evidente.

Un’interfaccia semplice sopra una parte tecnica molto meno semplice

Durante lo sviluppo ho cercato di evitare un errore che vedo spesso nei plugin molto tecnici: trasferire tutta la complessità dello sviluppatore sull’utente.

SAML, OIDC Federation, certificati X.509 e mutual TLS sono importanti per capire cosa succede sotto il cofano.

Non devono però trasformare ogni schermata di WordPress in un pannello incomprensibile.

Per questo il progetto separa configurazione, diagnostica e modalità di autenticazione cercando di mantenere leggibile l’interfaccia.

La complessità deve stare nel codice quando può stare nel codice.

Non davanti all’utente.

SPID, CIE e CNS in WordPress: stesso obiettivo, tecnologie differenti

Se dovessi riassumere l’intero progetto in poche righe, lo farei così:

SPID utilizza SAML.
CIE utilizza OIDC Federation.
CNS utilizza un certificato X.509 verificato tramite mutual TLS.

DB Solution – SPID, CIE & CNS porta questi tre percorsi all’interno di WordPress mantenendoli distinti dove devono esserlo e riunendoli dove ha senso farlo: nell’esperienza di accesso al servizio

readme.txt

Perché ho sviluppato DB Solution – SPID, CIE & CNS

Molti dei miei plugin WordPress nascono allo stesso modo.

C’è un problema reale.

Cerco una soluzione.

E quando la soluzione esistente mi costringe a mettere insieme troppi pezzi, provo a costruire qualcosa che affronti il problema in maniera più ordinata.

Con DB Solution – SPID, CIE & CNS il punto non era creare “un altro plugin per il login”.

Il problema era mettere insieme identità digitale e WordPress senza fingere che SPID, CIE e CNS fossero tre versioni dello stesso sistema.

Da qui la scelta di mantenere separati protocolli e controlli, ma di costruire intorno a essi un unico progetto.

Il risultato è un plugin WordPress dedicato all’accesso tramite SPID, Carta d’Identità Elettronica e Carta Nazionale dei Servizi, sviluppato pensando prima all’architettura e poi al pulsante.

Devi integrare SPID, CIE o CNS nel tuo sito WordPress?

Ogni progetto ha requisiti, infrastruttura e modalità di accesso differenti. Se hai bisogno di implementare SPID, CIE o CNS in WordPress, raccontami il tuo progetto e vediamo insieme come integrare DB Solution – SPID, CIE & CNS.