Openid Connect è il nuovo standard per lo sviluppo di applicazioni single sign-on. Se abbiamo effettuato almeno una volta il login su un sito utilizzando l’opzione “Accedi con Google”, molto probabilmente abbiamo utilizzato OpenId.
Cos’è Openid Connect
OAuth 2.0 è un framework che consente di impostare un meccanismo di autorizzazione. Openid Connect consente di aggiungere un layer di autenticazione a Oauth 2.0.
In pratica, OpenId Connect definisce delle API REST che utilizzano un token in formato JSON (Json Web Token o JWT).
In OpenId Connect non viene specificato come l’utente dovrà essere essere autenticato con il provider esterno. Questo significa che l’autenticazione può avvenire tramite username/password, ma anche attraverso ulteriori meccanismi come ad esempio un codice. Anche il livello di sicurezza non viene definito e può essere modificato in base alla tipologia di applicazione.
OpenID il futuro di SPID
Nel web il concetto di identità è strettamente connesso a quello di autenticazione, cioè al processo informatico di verifica dell’identità di un utente, per accertare che l’utente sia chi afferma di essere, che avviene comunemente utilizzando username e password che l’utente deve inserire tante volte quanti sono i servizi a cui intende accedere. (In questo articolo parliamo della autenticazione a due fattori)
Openid Connect con ogni probabilità sarà uno standard che traghetterà SPID verso il futuro, nel quale l’utilizzo delle identità digitali da parte dei cittadini sarà sempre più frequente e nel quale i Service provider dovranno offrire servizi alla portata di chiunque, mediante un semplice click. Openid Connect è uno standard che ha l’ambizione di creare un meccanismo di cooperazione tra molte entità, sia pubbliche che private, per la verifica dell’identità, fornendo un meccanismo affidabile, semplice ed efficace che consente alle applicazioni ed ai servizi presenti sul Web di identificare i propri utenti, mediante una o più delle loro identità digitali, memorizzate presso un trusted Identity Provider.
Come nasce e come si sviluppa OpenID Connect
OpenID Connect, sviluppato da OpenID Foundation, è un protocollo SSO basato sul framework di autorizzazione OAuth 2.0, la stessa OpenID Foundation lo definisce “un semplice livello di identità sul protocollo OAuth 2.0”.
Dalla sua inaugurazione nel 2014, Openid Connect ha avuto un’ampia diffusione: la maggiore interoperabilità, rispetto ad altri sistemi di SSO, e la facilità di implementazione ne hanno fatto uno dei protocolli più utilizzati dalle grandi multinazionali del settore tecnologico, come Google, Facebook e Microsoft.
La struttura aperta e decentralizzata di Openid Connect offre flessibilità, interoperabilità e semplicità di implementazione, risolvendo in gran parte i problemi legati a IAM su reti eterogenee come Internet, e, combinando il Single Sign-On (SSO) e l’autorizzazione delegata, fornisce, altresì, un servizio completo in termini di requisiti di sicurezza: riducendo il frequente utilizzo del binomio sempre più insicuro del nome utente e password e liberando le applicazioni e i servizi dall’onere della gestione delle identità, che viene delegata ad Identity Provider “affidabili”, sfruttando la loro sicurezza, scalabilità e infrastruttura.
I dati dell’Utente non vengono mai esposti direttamente al suo browser o all’App, dato che la loro comunicazione avviene tra Identity provider e Service provider; ciò consente di evitare potenziali attacchi attuati mediante l’intercettazione delle comunicazioni, soprattutto nel caso di applicazioni per dispositivi mobile.
Inoltre, l’utente può avere il pieno controllo su ogni singolo accesso effettuato su un servizio, avendo la possibilità di revocare ogni autenticazione direttamente presso l’Identity provider.
Spid OpenID Connect
I diversi punti di forza di OpenID Connect, in particolare: la facilità di integrazione in sistemi eterogenei, soprattutto in sistemi mobile, e l’interoperabilità con componenti di terze parti in modalità sicura e scalabile, hanno condotto l’Agenzia per l’Italia Digitale (AGID) ad avviare un gruppo di lavoro per disciplinare l’uso di OpenID Connect nel Sistema Pubblico di Identità Digitale italiano (SPID) con apposite linee guida.
Le linee guida
Le Linee Guida prevedono l’utilizzo del profilo “iGov” di OpenID Connect, un particolare profilo che definisce un set di base obbligatorio di controlli di sicurezza adatto a una vasta gamma di casi d’uso governativi, pur mantenendo una ragionevole facilità di implementazione e funzionalità.
Con le regole tecniche OpenID Connect, le entità coinvolte in SPID sono:
- l’Utente finale, rappresentato dal suo User Agent, che desidera accedere ai servizi forniti da un Client e, per questo, ha bisogno di dimostrare la propria identità;
- il Client, cioè l’applicazione che si affida ad un OpenID Connect Provider, al fine di autenticare un Utente finale;
- l’OpenID Connect Provider, che rilascia un ID token, contenente l’attestazione sull’identità dell’Utente finale e un eventuale token di accesso OAuth 2.0.
Il Client prepara una richiesta di autenticazione, Authentication Request, contenente i parametri desiderati e invia la richiesta al “Server di autorizzazione” Authorization Server.
Il “Server di autorizzazione” autentica l’Utente finale, mediante le proprie credenziali (es. username, password, OTP), e chiede l’autorizzazione ad inviare i dati al Client. Se l’Utente lo autorizza, il “Server di autorizzazione” reindirizza l’Utente finale verso il Client con un “codice di autorizzazione”.
Il Client, utilizzando il codice di autorizzazione, richiede al Token Endpoint un ID token per identificare l’Utente, e un Access token.
Mediante l’Access token, il Client può richiede allo User Info Endpoint dell’OpenID Connect Provider i dati identificativi dell’Utente necessari per la fruizione del servizio, come: nome, cognome, codice fiscale, domicilio, ecc.
Conclusioni
In conclusione, OpenID Connect rappresenta una rivoluzione che ha l’ambizione di traghettare SPID verso il futuro, un futuro nel quale l’utilizzo delle identità digitali da parte dei cittadini sarà sempre più frequente e nel quale i Service provider dovranno offrire servizi alla portata di chiunque, mediante un semplice “click”.