# Single sign-on

Il single sign-on (in acronimo SSO, traducibile come "autenticazione unica" o "identificazione unica") è la proprietà di un sistema di controllo d'accesso che consente ad un utente di effettuare un'unica autenticazione valida per più sistemi software o risorse informatiche alle quali è abilitato.

## Obiettivi

Gli obiettivi sono multipli:
* semplificare la gestione delle password: maggiore è il numero delle password da gestire, maggiore è la possibilità che vengano utilizzate password simili le une alle altre e facili da memorizzare, abbassando così il livello di sicurezza;
* semplificare la gestione degli accessi ai vari servizi;
* semplificare la definizione e la gestione delle politiche di sicurezza.

## Architettura

Vi sono tre approcci per la creazione di un sistema di SSO: l'approccio centralizzato, l'approccio federativo e l'approccio cooperativo.

### Approccio centralizzato

Il principio è di disporre di un database globale e centralizzato di tutti gli utenti e di centralizzare allo stesso modo la politica della sicurezza. Questo approccio è destinato principalmente ai servizi dipendenti tutti dalla stessa entità, per esempio all'interno di una azienda.

### Approccio federato

Con questo approccio differenti gestori ("federati" tra loro) gestiscono dati di uno stesso utente. L'accesso ad uno dei sistemi federati permette automaticamente l'accesso a tutti gli altri sistemi.
Un viaggiatore potrebbe essere sia passeggero di un aereo che ospite di un albergo. Se la compagnia aerea e l'albergo usassero un approccio federativo, potrebbero stipulare un accordo reciproco sull'autenticazione dell'utente finale. Il viaggiatore potrebbe ad esempio autenticarsi per prenotare il volo ed essere autorizzato, in forza di quella sola autenticazione, ad effettuare la prenotazione della camera d'albergo.
Questo approccio è stato sviluppato per rispondere ad un bisogno di gestione decentralizzata degli utenti: ogni gestore federato mantiene il controllo della propria politica di sicurezza.

### Approccio cooperativo

L'approccio cooperativo parte dal principio che ciascun utente dipenda, per ciascun servizio, da uno solo dei gestori cooperanti. In questo modo se si cerca, ad esempio, di accedere alla rete locale, l'autenticazione viene effettuata dal gestore che ha in carico l'utente per l'accesso alla rete.
Come per l'approccio federativo, in questa maniera ciascun gestore gestisce in modo indipendente la propria politica di sicurezza. L'approccio cooperativo risponde ai bisogni di strutture istituzionali nelle quali gli utenti sono dipendenti da una entità, come ad esempio in università, laboratori di ricerca, amministrazioni, etc.

## Soluzioni per SSO

Esistono molti SSO gratuiti e commerciali, eccone una lista parziale:
* Il JA-SIG Central Authentication Service (CAS) è un servizio single sign-on libero (originariamente sviluppato dall'Università di Yale) che permette alle applicazioni web la possibilità di rinviare tutte le autenticazioni a un server centrale o a più server di fiducia. Numerosi client sono disponibili gratuitamente, inclusi client per Java, Microsoft .Net, PHP, Perl, Apache, uPortal, Liferay e altri.
* A-Select è il sistema di autenticazione olandese co-sviluppato da SURFnet (l'olandese NREN). A-Select ora è diventata open source ed è usata dal governo olandese per esempio per DigiD, il loro sistema di autenticazione. A-Select permette allo staff e agli studenti di ottenere l'accesso a svariati servizi web attraverso una sola autenticazione on-line. Le istituzioni possono usare A-Select per proteggere le loro applicazioni web in maniera semplice. Possono usare differenti strumenti di autenticazione che vanno dal nome utente/password a metodi più sicuri come una one-time password mandata a un cellulare o a un'autenticazione bancaria su Internet.
* CoSign è un progetto open source, originariamente destinato a dotare l'Università del Michigan di un sicuro sistema di autenticazione web di tipo single sign-on. CoSign permette di autenticare gli utenti sul web server e poi fornisce un campo variabile lo users'name. Quando l'utente accede a una parte del sito che richiede l'autenticazione, la presenza di questa variabile permette l'accesso senza doversi loggare nuovamente. CoSign è parte del software lancio del National Science Foundation Middleware Initiative (NMI http://www.nsf-middleware.org/default.aspx).
* Enterprise single sign-on (E-SSO), chiamato anche legacy single sign-on, dopo una prima autenticazione utente, intercetta i prompt del login presentati da una applicazione secondaria e li inserisce automaticamente nei campi come un loginID o una password. Il sistema E-SSO tiene conto dell'interazione con le applicazioni che sono incapaci di tirar fuori l'autenticazione, fatta precedentemente dall'utente, essenzialmente attraverso lo screen scraping.
* Il Web single sign-on (Web-SSO), anche chiamati Web Access Management (Web-AM), lavora strettamente con le applicazioni e le risorse che hanno accesso a un web browser. L'accesso alle risorse web è intercettato sia usando un web proxy server o installando un componente su ogni web server stabilito. Gli utenti non autorizzati, che tentano di accedere a una risorsa, vengono deviati verso un servizio di autenticazione e ritornano solo dopo aver effettuato con successo un single sign-on. I Cookies sono usati molto spesso per tracciare lo stato di autenticazione dell'utente; l'infrastruttura Web-SSO estrae le informazioni dell'identificazione dell'utente dagli stessi cookie, passandole ad ogni risorsa web.
* Kerberos è un meccanismo conosciuto alle applicazioni e serve per estrarre interamente le autenticazioni. Gli utenti si registrano sul server Kerberos, il quale rilascia un "biglietto da visita", che il loro client software presenterà ai server a cui loro tenteranno di accedere. Kerberos è disponibile per Unix, per Windows e per piattaforme di elaborazione dati, ma richiede ampie modifiche al codice dell'applicazione client/server, perciò non è usato da molti applicativi legacy.
* Federation è un nuovo approccio, anche per applicazioni web, che usa un protocollo basato su degli standard che permette a una applicazione di accertare una sola volta l'identità di un utente di servizi diversi, in modo tale da evitare il bisogno di autenticazioni ridondanti. Gli standard per supportare Federation includono SAML e WS-Federation (http://www-128.ibm.com/developerworks/library/specification/ws-fed).
* Light-Weight Identity e Open ID, sotto la protezione di YADIS, offrono SSO ripartiti e decentralizzati, dove l'identità è legata a una URL eseguita facilmente, che può essere verificata da qualsiasi server che usi uno dei protocolli condivisi.
* JOSSO o Java Open Single Sign-On è un'infrastruttura SSO open source basata su J2EE, che punta a trovare una soluzione per piattaforme centralizzate di autenticazione dell'utente neutrale. JOSSO usa i servizi web per accertare l'identità dell'utente, permettendo l'integrazione di applicazioni non-Java (cioè PHP, Microsoft ASP, ecc.) al Servizio Single Sign-On usando il protocollo SOAP sopra il protocollo HTTP.
* Shibboleth System è un pacchetto software open source, basato su standard, per il web SSO tra organizzazioni o all'interno di un'organizzazione (sistema sviluppato da Internet2).