Nel precedente post ho sconsigliato, per problemi di privacy e sicurezza, l’utilizzo di OpenID come sistema centralizzato di autenticazione per tutti i servizi web.
Vorrei ritornare sull’argomento per approfondire il funzionamento di OpenID (dal punto di vista di un utente) per motivare meglio questa scelta e spiegare nel dettaglio la soluzione che reputo più idonea.
Analizziamo i vari metodi di registrazione che si possono trovare sui siti web esponendo pregi e difetti.
Registrazione con username e password
Il metodo più facile per gestire la registrazione è quello di chiedere all’utente che si vuole iscrivere di scegliere esclusivamente uno username e una password.
Questo metodo non fornisce al sito alcuna informazione sull’identità dell’utente, ma consente esclusivamente di accertarsi che, nei successivi accessi, chi entra è la stessa persona che è entrata la prima volta.
In questo modo il sito è in grado di collegare le azioni compiute, siano esse informazioni memorizzate o altro, allo username. Questo può consentire di attivare meccanismi di restrizione dei permessi quali, ad esempio, consentire l’accesso alle informazioni esclusivamente all’utente che le ha inserite.
Questa soluzione, tuttavia, ha 2 grossi limiti.
Il primo è un limite “organizzativo”: cosa succede, ad esempio, se non mi ricordo più la password?
Il secondo è un problema di funzionalità. Supponiamo di voler creare una “rete” di fiducia in cui l’accesso alle informazioni è consentito non solo all’utente che le inserisce, ma anche a ad altri. Questi altri possono essere identificati esclusivamente tramite username. Questo comporta che la corrispondenza username – persona reale deve essere effettuata al di fuori del meccanismo proposto, ad esempio con una mail tra le 2 persone in cui si dice “il mio username è xyz”.
Registrazione standard Web 1.0
Per ovviare ai problemi sopra elencati, in tutti i siti che attualmente conosciamo, la registrazione è accompagnata dalla richiesta di un indirizzo e-mail. La procedura di registrazione si svolge nel seguente modo:
- Scelta di username e password e indicazione del proprio indirizzo di e-mail
- Invio di una e-mail di conferma con un link
- Cliccando sul link l’account viene attivato
Ovviamente vi sono variazioni sul metodo che si basano sul fornire una password automatica che l’utente può poi cambiare, utilizzano direttamente l’indirizzo e-mail come username o sfruttano altri metodi per ottenere conferma, quali un SMS come nel caso dei provider telefonici.
Qualunque sia la variante, tuttavia, l’utente viene identificato non solo come colui che si è registrato, ma anche come colui che risponde ad un indirizzo e-mail o altro strumento di comunicazione.
L’indirizzo e-mail costituisce un’identificazione univoca e, se viene pubblicato, consente anche a chi mi conosce di associarmi a tale account.
Il meccanismo funziona e i problemi precedentemente esposti sono stati risolti. I promotori di altri sistemi, tuttavia, segnalano che questo meccanismo porta ad una proliferazione di username, password e dati per ogni utente (uno per ogni sito) con disagi per chi va tutti i giorni su svariati account e li vuole tenere allineati.
OpenID
OpenID permette, tra le altre cose, di avere un account unico. Ecco come funziona l’iter di registrazione.
- Mi registro su un sito che fornisca il servizio di provider OpenID utilizzando il metodo standard basato su e-mail
- A questo punto, per registrarmi ad un altro sito che si comporti da client OpenID fornisco esclusivamente la mia URI OpenID, ovvero l’URI che mi identifica su internet
- Il nuovo sito fa una richiesta al mio provider OpenID chiedendogli i miei dati e il provider, prima di inviarli, mi chiede conferma tramite redirezione su una sua pagina e, se non l’ho già fatto, richiesta di username e password originali
- Il client a questo punto mi autentica registrando le informazioni che è riuscito a ricavare dal mio account OpenID
- Nei successivi accessi fornirò sempre la mia URI e la richiesta di password avverrà sempre e solo da parte del provider OpenID e solamente alla prima connessione
Tramite questo metodo ho avuto i seguenti vantaggi:
- Sono stato identificato in modo univoco su internet (identità)
- Non ho dovuto ripetere i miei dati per la nuova registrazione
- In teoria il nuovo sito potrà aggiornare le informazioni ogni volta che cambieranno sul mio account
- Utilizzo uno username/password unici per tutti i servizi
- Inserisco username e password una sola volta e vale per tutti i siti attivati
E’ un meccanismo fantastico, ma il rovescio della medaglia è che il mio provider non solo può accedere a tutti i miei siti spacciandosi per me (basta una modifica al programma o la memorizzazione in chiaro della password), ma ne ha anche l’elenco in quanto deve memorizzare i siti autorizzati.
Dormireste sonni tranquilli?
Come utilizzare OpenID
OpenID ha grossi vantaggi, soprattutto nella capacità che ha di mantenere sincronizzati i propri dati tra siti differenti e, se completato con le informazioni che possono essere memorizzate tramite un file FOAF, potrebbe costituire veramente la nostra identità in rete.
Il meccanismo che propongo è quello di rinunciare allo username/password unici per ogni sito. Questa rinuncia è, a mio avviso, minima e se non se ne può fare a meno, piuttosto utilizziamo i meccanismi di memorizzazione automatica dei browser.
La procedura di registrazione, pertanto, potrebbe essere la seguente:
- Registrazione utilizzando il primo metodo (solamente username e password, senza e-mail) completato con la mia URI OpenID)
- Il sito scarica dal provider OpenID i miei dati e memorizza la mia URI per successivi aggiornamenti
- La URI OpenID non potrà mai essere usata per l’accesso al mio sito, ma dovrò sempre usare username e password forniti al sito stesso
In questo modo ho mantenuto il vantaggio di collegare tutti i miei siti alla mia identità e permettere alle persone di sapere che quel sito è della persona descritta a quell’URI e citata come amico da quell’altro utente.
Alla semplice URI (che potrebbe essere direttamente il mio file FOAF), OpenID ha aggiunto la dimostrazione della proprietà dell’URI, meccanismo fondamentale per costruire una rete di fiducia basata su tale identità.