Accesso remoto ai servizi del server
In passato l’accesso esterno ai servizi avveniva tramite port forwarding sul router e autenticazione locale fornita da Domoticz e Node-RED.
Il nuovo sistema utilizza invece un approccio più sicuro e centralizzato, basato su un reverse proxy con autenticazione unificata.
Componenti principali
Nginx (host) – Reverse proxy e gestione del traffico HTTPS
Certbot (host) – Gestione dei certificati TLS
Keycloak (container, HTTP) – Identity & Access Management
OAuth2 Proxy (container, HTTP) – Intermediario tra Nginx e Keycloak
Tutti i servizi applicativi (Domoticz, Node-RED, ecc.) sono in container HTTP all’interno della rete isolata IoT_Network.
🔐 Processo di autenticazione
1. Accesso iniziale
L’utente raggiunge l’host tramite HTTPS (es. https://domotica.miodominio.it).
Nginx riceve la richiesta ed è l’unico punto esposto a Internet.
2. Controllo autenticazione in Nginx
Se la risorsa richiesta è protetta:
Nginx non inoltra la richiesta al servizio interno
Nginx la passa a OAuth2 Proxy
3. Verifica della sessione (OAuth2 Proxy)
OAuth2 Proxy verifica se l’utente possiede un cookie valido.
Se manca, viene avviato il flusso OAuth2/OIDC con reindirizzamento a Keycloak.
4. Login tramite Keycloak
Keycloak (in HTTP interno) gestisce l’autenticazione:
username/password, eventuale 2FA o provider esterni.
Il traffico verso Keycloak non è cifrato, ma rimane all’interno della rete privata IoT_Network.
5. Emissione e gestione dei token
Keycloak restituisce a OAuth2 Proxy i token (ID/Access/Refresh).
OAuth2 Proxy li valida, crea la sessione e imposta il cookie autenticato.
6. Autorizzazione da parte di Nginx
OAuth2 Proxy comunica a Nginx che l’utente è autenticato.
Nginx ora permette l’accesso alla risorsa richiesta.
7. Accesso ai servizi interni
Nginx inoltra la richiesta via HTTP ai container interni, ad esempio:
http://domoticz:8080
http://nodered:1880
I servizi non sono esposti su Internet e non gestiscono autenticazione:
questa è completamente centralizzata tramite Nginx + Keycloak.