Asset Publisher

null Keycloak for application security

Techblog

Keycloak for application security

28 February 2023

Di Daniele Vendrame - Backend Developer @LARUS Business Automation

Introduzione

La sicurezza delle applicazioni è uno dei temi più importanti di questi tempi nel mondo IT. Qualsiasi accesso non autorizzato a informazioni riservate può mettere l'azienda che ospita i dati in gravi difficoltà, con pesanti sanzioni finanziarie e legali.

Ciò che le moderne aziende desiderano sono strumenti affidabili e possibilmente facili da usare che gestiscano quali utenti possono effettivamente identificare e accedere alle loro applicazioni.

Questo articolo parlerà di uno di questi strumenti, ovvero Keycloak, prodotto open source per servizi e applicazioni moderni.

💡 Lo scopo di questo articolo è rispondere alle domande principali che sorgono quando si è indecisi sull'utilizzo di un nuovo tool: Cosa offre? È effettivamente la soluzione migliore per il mio caso d'uso?

Cos'è Keycloak?

Keycloak è un prodotto open source che consente Single Sign-On (SSO) con Identity and Access Management (IAM) mirato ad applicazioni e servizi moderni.

Il progetto è sotto licenza Apache License 2.0 e dal marzo 2018 è sviluppato, finanziato e mantenuto da Red Hat. È anche utilizzato come progetto upstream per Red Hat SSO.

Attualmente ci sono tre distribuzioni principali di Keycloak: Server, Docker Image e tramite Operator SDK. Libera scelta a voi.
 

Una rapida overview

Prima di esaminare le principali funzionalità che lo strumento offre, definiamo alcuni concetti fondamentali che sono la sostanza per la configurazione di Keycloak per la propria applicazione. Li ritroverete spesso nel resto dell'articolo.
 

 

  • Utenti: gli utenti sono entità in grado di accedere al sistema. Possono avere attributi associati a loro, come e-mail, nome utente, indirizzo, numero di telefono e data di nascita. È possibile assegnarli a un gruppo e dar loro ruoli specifici.



     

  • Ruoli: i ruoli identificano un tipo o una categoria di utente. Le applicazioni assegnano spesso accessi e autorizzazioni a ruoli specifici piuttosto che a singoli utenti. In effetti, gestire gli utenti può essere troppo dettagliato e difficile da gestire.

  • Gruppi: i gruppi gestiscono gruppi di utenti. Si può definire un insieme di attributi per ogni gruppo ed assegnare ruoli. Gli utenti che diventano membri di un gruppo ereditano gli attributi e le assegnazioni di ruoli di quel gruppo.

  • Realm: un realm gestisce un insieme di utenti, credenziali, ruoli e gruppi. Un utente appartiene e accede a un realm. I realm sono isolati l'uno dall'altro e possono gestire e autenticare solo gli utenti che controllano.

  • Client: i client sono entità che possono richiedere a Keycloak di autenticare un utente. Spesso, i client sono applicazioni e servizi che vogliono utilizzare Keycloak per proteggersi e fornire una soluzione di Single Sign-On. I clients possono anche essere entità che desiderano solo richiedere informazioni sull'identità o un token di accesso in modo da poter richiamare in modo sicuro altri servizi sulla rete che sono protetti da Keycloak.

Caratteristiche di Keycloak

Vediamo ora cosa offre effettivamente lo strumento.

  • Supporto per più protocolli: Attualmente, Keycloak supporta tre diversi protocolli, che sono OpenID Connect, OAuth 2.0 e SAML.

  • Single Sign-On e Sign-Out: consente all'utente di autenticarsi solo una volta per accedere a diversi servizi correlati ma indipendenti.

  • Autenticazione a due fattori (2FA): Keycloak supporta 2FA sia tramite posta che tramite cellulare per aggiungere un livello di sicurezza all'autenticazione.

  • Console di amministrazione: Keycloak offre una GUI completamente personalizzabile in cui è possibile gestire tutte le configurazioni richieste per ogni reame separato.

Identità e accesso utente

Keycloak consente di creare un database utenti con ruoli e gruppi personalizzati. Ciò può essere utile quando è necessario concedere autorizzazioni di accesso specifiche a parti dell'applicazione.

  • Integrazione LDAP: per impostazione predefinita, Keycloak supporta LDAP e Active Directory per la sincronizzazione con i database utenti. Puoi usare Keycloak User Storage SPI se vuoi creare un'estensione personalizzata. Se intendi perseguire quest'ultima opzione, assicurati che la tua soluzione abbia tutti i dati di cui Keycloak ha bisogno per essere pienamente funzionale (vedi qui).

  • Broker di identità: Keycloak può anche funzionare come proxy tra i tuoi utenti e qualche provider di identità esterno.

  • Login social: Keycloak supporta nativamente Google, Twitter, Facebook e altre famose piattaforme di social media. Tuttavia, per far funzionare correttamente questa funzione, è necessario eseguire una piccola configurazione manuale. In generale, tuttavia, la configurazione dell'accesso con servizi di terze parti è abbastanza semplice.

  • Personalizzazione delle pagine: Keycloak consente di personalizzare tutte le pagine della console di amministrazione con temi. È possibile creare facilmente un tema personalizzato utilizzando una combinazione classica di HTML e CSS e importarlo in Keycloak. Se vuoi rendere le cose un po' più piccanti, puoi persino includere script JS.

 

L'elenco delle funzionalità offerte da Keycloak non finisce qui. Tuttavia, a nostro parere, quelle sopra riportate sono le principali. Se vuoi vedere l'elenco di tutte le funzionalità, puoi farlo qui.

 

Perché utilizzare Keycloak?

Prima di tutto, è open source, quindi è gratuito! La maggior parte delle alternative a Keycloak (AuthO, Okta...) richiedono il pagamento e offrono servizi simili.

 

  • Con Keycloak hai una Single Sign-On e Sign-Out completamente integrata, che consente ai tuoi utenti di accedere a diverse applicazioni con un solo login.

  • Puoi gestire le applicazioni utilizzando diversi protocolli di sicurezza con un singolo strumento anziché averne uno per ogni cliente.

  • Keycloak supporta nativamente tre diversi protocolli di autenticazione. Da un unico punto di controllo puoi gestire diverse esigenze di sicurezza semplicemente suddividendo le tue applicazioni in diversi "realms". Ciò significa anche che hai maggiore libertà nella scelta del protocollo più adatto alle tue applicazioni, poiché sai di non avere limitazioni dovute allo strumento.

  • In ogni "realm" puoi suddividere i tuoi utenti in gruppi e concedere autorizzazioni al gruppo invece che ai singoli utenti. Questo è utile se devi limitare le funzionalità che l'applicazione può offrire, nonché i dati che ogni utente può vedere in base alla sua autorità.

  • Se hai già un database utenti come LDAP o Active Directory, la configurazione di Keycloak sarà semplice poiché ha un meccanismo integrato per sincronizzarsi con tali provider di identità.

  • Inoltre, se stai pianificando di aggiungere un sistema di Social Login alla tua applicazione, ricorda che Keycloak lo supporta già "out of the box".


Benefici non tecnici

  • La documentazione di Keycloak è ben scritta. Ha guide passo-passo su praticamente tutto ciò che puoi immaginare per quanto riguarda la configurazione dello strumento. Quindi, puoi trovare la risposta alle tue domande lì.

  • Un altro vantaggio di Keycloak è il grande supporto della community. Ciò significa che se non riesci a risolvere i tuoi problemi guardando la documentazione, puoi sicuramente trovare molti esempi online.

  • Infine, l'interfaccia utente che lo strumento offre è ben fatta e user-friendly, rendendo qualsiasi modifica di configurazione rapida e facile. Inoltre, ogni parte di essa, dalla schermata di login alla console di amministrazione di ogni "realm", è completamente personalizzabile. Questo è qualcosa che spesso viene trascurato, ma poter dare un tono alla tua applicazione è sempre apprezzabile.

Quando Keycloak potrebbe non essere la migliore opzione?

Come detto all'inizio di questo articolo, qui vengono riportate sia le ragioni per cui dovresti utilizzare Keycloak sia quelle per cui non farlo. Quindi ora ti elencheremo alcune ragioni per cui potresti considerare altre alternative.

Come ci si potrebbe aspettare, la maggior parte di queste sono semplicemente l'opposto delle ragioni scritte nel paragrafo precedente.

 

  • Non hai bisogno di SSO. Se hai una singola applicazione, non userai Keycloak a pieno regime poiché non otterrai vantaggio dalla Single Sign-On e avrai semplicemente bisogno di un portale per effettuare il login al tuo client.

  • Nessuna integrazione con altri fornitori di dati utente. Se hai un database utente puro contenente solo nomi utente e credenziali e non hai intenzione di concedere autorizzazioni speciali in base al ruolo, al gruppo... allora Keycloak potrebbe complicare eccessivamente ciò che stai cercando di ottenere.

  • Preferisci avere qualche tipo di garanzia che i progetti open source come Keycloak di solito non offrono. Non hai una tabella di marcia e nel caso qualcosa non funzioni come previsto, puoi certamente aprire una nuova problematica sul loro GitHub. Facendo ciò, tuttavia, non hai idea di quando prenderanno in carico la tua richiesta per risolvere il problema.

Quest'ultimo punto è di solito vero per i progetti open source quindi lo abbiamo sottolineato, ma tieni presente che, come detto all'inizio, Keycloak viene anche utilizzato come progetto upstream per Red Hat SSO, quindi puoi stare certo che si tratta di un sistema ben scritto e ben progettato.

Ci teniamo a specificare che soddisfare una qualsiasi delle condizioni sopra non impedisce di utilizzare Keycloak, significa solo che potresti utilizzare una soluzione più semplice e meno esigente.

Conclusioni

In questo articolo abbiamo esaminato Keycloak, cos’ è, cosa può offrire e quando dovresti usarlo. Speriamo di essere stati in grado di darti qualche conoscenza generale sullo strumento stesso e di averti aiutato a decidere se possa essere effettivamente una soluzione conveniente per la tua applicazione, se hai voglia di parlarne con noi, sai dove trovarci!