Autenticazione
Questa sezione spiega come funzionano autenticazione e autorizzazione in Homsai Backend v2: token JWT, modello di permessi e convenzioni di sicurezza sugli endpoint.
Overview
Questa sezione descrive:
-
come ottenere e utilizzare i token JWT per autenticare le richieste;
-
come funziona il modello di autorizzazione basato su permessi e proprietà del plant;
-
quali sono le regole di sicurezza generalmente applicate agli endpoint;
-
alcuni esempi pratici di chiamate tipiche.
JWT Autenticazione
Tipi di Token
Il flusso di autenticazione utilizza due tipi di token:
- accessToken
- A breve durata.
- Inviato in ogni chiamata protetta nell’header
Authorization.
- refreshToken
- A durata più lunga.
- Utilizzato per ottenere un nuovo access token senza ripetere il login con credenziali.
Entrambi i token vengono emessi dall’endpoint POST /auth/login.
Fluso di Login
- Il client invia una richiesta
POST /auth/logincon le credenziali utente nel body JSON. - Il backend valida le credenziali e restituisce un
accessTokene unrefreshToken. - Il client memorizza i token in modo sicuro e utilizza l’
accessTokenper le chiamate successive.
Esempio di header per qualsiasi richiesta protetta:
Authorization: Bearer <accessToken>
Quando l'accessToken scade, il client può chiamare GET /auth/token passando il refreshToken (secondo lo schema documentato) per ricevere un nuovo access token.
Modello di autorizzazione
Permessi
Ogni area funzionale è protetta da specifici permessi. Ecco alcuni esempi tipici:
Impianti
PLANTS READPLANTS CREATEPLANTS UPDATEPLANTS DELETE
Dispositivi
DEVICES READDEVICES CREATEDEVICES UPDATEDEVICES DELETE
Sensori
SENSORS READSENSORS CREATESENSORS UPDATESENSORS DELETE
Tipi e firme
SENSOR_TYPES READ/CREATE/UPDATE/DELETEDEVICE_TYPES READ/CREATE/UPDATE/DELETELOAD_SIGNATURES READ/CREATE/UPDATE/DELETE
Energia e metriche
PLANT_POWER_CONSUMPTION READPLANT_POWER_PRODUCTION READDAILY_PREDICTIONS READENERGY_TYPE READPLANT_HEALTH READ
Il set esatto di permessi associato a un utente dipende dai ruoli configurati nel backend di Homsai.
Controlli di proprietà
Per molte operazioni su un determinato impianto (e sui suoi dispositivi o sensori), il backend applica controlli di proprietà:
- il chiamante deve avere il permesso richiesto (es.
PLANTS UPDATE) - e deve essere il proprietario della risorsa (impianto)
Se un utente ha il permesso generico ma non è proprietario dell'impianto, il backend restituirà 403 Forbidden.
Convenzioni di sicurezza per gli endpoint
Tutte le operazioni di lettura o scrittura su impianti, dispositivi, sensori, metriche e previsioni richiedono:
- un JWT
accessTokenvalido - i permessi appropriati
- e, dove applicabile, la proprietà dell'impianto
Endpoint di autenticazione pubblici:
POST /auth/loginPOST /auth/resetPassword
Endpoint di configurazione speciali:
POST /auth/setPassword
Errori:
- Token mancante/non valido →
401 Unauthorized - Token valido ma permessi/ownership mancanti →
403 Forbidden