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

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:

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:

I servizi non sono esposti su Internet e non gestiscono autenticazione:
questa è completamente centralizzata tramite Nginx + Keycloak.