WEB

Autenticazione federata semplice

4 Luglio 2018

Un approccio per ovviare ai problemi di registrazione e login, è l’autenticazione federata di cui parleremo in questo articolo, ponendo particolare attenzione al progetto KeyCloak.

Prendiamo in considerazione questo scenario.
Immaginiamo di avere un sistema composto da più portali e-commerce, da un applicativo di contabilità centralizzato, di un dominio con supporto kerberos al quale si deve dare accesso ai portali web. I portali web sono in esecuzione in differenti location, utilizzano logiche proprie di gestione utenti e quindi vivono stand alone.
Un approccio a questo problema è quello di creare una VPN che permette ai server web di accedere al dominio, avere ogni applicazione che, in qualche modo, permette agli utenti di autenticarsi, registrarsi, resettare la password, confermare la mail, prevenire attacchi a forza bruta, ecc. Implementare questa soluzione richiede però una profonda conoscenza delle diverse componenti del sistema, sia applicative che di sistema.
Un approccio molto più efficiente è quello di esporre un servizio di SSO che disponga di protocolli standard disegnati per poter funzionare semplicemente comunicando con HTTP/HTTPS, per esempio SAML o OpenID Connect, senza richiedere modifiche particolari all’infrastruttura.

KeyCloak è la soluzione opensource che permette di applicare la seconda soluzione in maniera relativamente semplice.
KeyCloak supporta più realm per poter avere più basi utenti gestite nella stessa istanza.

Espone e consuma SAML e OpenID Connect, permette il login social, implementa politiche su password/registrazione utenti, sincronizzazione con LDAP e Kerberos, gestisce l’OTP.
Esistono, inoltre, ottime librerie per integrare la sicurezza di ogni applicazione legacy e in caso mancasse la libreria specifica per il nostro linguaggio, basta utilizzare un normale client OpenID Connect o SAML per l’autenticazione verso KeyCloak.
Anche l’integrazione con basi di utenti esistenti è possibile, permettendo così di sfruttare in maniera semplice e moderna sistemi di autenticazione legacy aumentandone il livello di sicurezza.
Ma perché prendersi l’onere di gestire un servizio aggiuntivo, quando la nostra piattaforma è indipendente e dispone già dei suoi servizi di logon?
In questo modo, il nostro portale web utilizzerebbe per autenticarsi un sistema sicuro e standard e permetterebbe l’accesso tramite le utenze di altri servizi, magari di altri portali della stessa società che eroga più servizi, oppure semplicemente tramite Facebook o Google, evitando all’utente i passaggi necessari alla registrazione.
Non richiedere le credenziali per ogni portale migliora anche l’esperienza utente.
Oltre le comodità, non scordiamo uno dei fattori più importanti: la sicurezza. Autenticando gli utenti una volta sola si riducono le possibilità di phishing, per esempio comunicando agli utenti che l’unico momento in cui gli viene chiesta la password è nel momento in cui sono su quello specifico portale.