Keycloak è una piattaforma open-source di Identity e Access Management (IAM) che permette di gestire autenticazione, autorizzazioni e identità degli utenti in modo centralizzato.
Nel contesto di questa configurazione Docker, Keycloak viene eseguito in modalità HTTP all’interno della rete interna, utilizza un database PostgreSQL dedicato e supporta temi personalizzati. Il servizio è progettato per funzionare dietro un reverse proxy (Nginx), che si occupa della gestione del traffico HTTPS e dell’esposizione verso l’esterno.
comando installazione container
copiare yaml nel percorso /srv/docker/Keycloak
cd /srv/docker/Keycloak
sudo docker compose up -d
Creato il container, Keycloak è raggiungibile solo in http:
Installato il servizio, vediamo alcuni passi base di configurazione. Per il momento viene utilizzato direttamente il Realm master.
Per prima cosa, procedere con la creazione del client. Ad ogni servizio come Domoticz o Nodered, ne viene creato uno. Tenere a mente redirect URL e nome Realm, servirà in Oauth2Proxy.
Dopo la creazione del client, procedere con la creazione dell'user. Verra generato un ID. servirà in Oauth2Proxy.
Di seguito è possibile visualizzare il tipo di credenziali. navigando nelle impostazioni è possibile abilitare OTP ed utilizzare google Authenticator.
In Realm settings, Sessions, è possible gestire la durata delle sessioni. Nel mio caso viene utilizzata la funzione offline. impostata con scadenza 30 giorni.
Per ogni singolo client, è possibile scegliere se abilitare offline_access.
L’offline access di Keycloak permette a un servizio di continuare ad autenticarsi anche quando l’utente non è più collegato.
Quando questa funzione è attiva, Keycloak rilascia un offline token, cioè un token speciale che:
vale fino a 30 giorni ( nel mio caso),
può essere usato per ottenere nuovi access token anche senza che l’utente abbia una sessione attiva.
L’utente fa login una volta.
OAuth2 Proxy riceve l’offline token.
Ogni 12 ore, OAuth2 Proxy chiede a Keycloak un nuovo access token usando l’offline token.
L’utente non deve rieffettuare il login finché l’offline token resta valido (30 giorni).
Permette al sistema di funzionare continuamente, anche se l’utente:
non è più online,
ha chiuso il browser,
ha spento il dispositivo.
È perfetto quando serve mantenere l’accesso stabile nel tempo, come in dashboard, pannelli di controllo, server o sistemi domotici.