Tutte le risorse della Cloudlet sotto il path /auth
sono protette da autenticazione.
Le Cloudlet Livebase supportano nativamente due sistemi di autenticazione: uno basato su JSON Web Token (da qui in poi abbreviato in JWT) o ed uno di tipo HTTP Basic.
JSON Web Token #
JWT è uno standard web per lo scambio di dati definito dalla RFC 7519. Un token JWT è composto da 3 sezioni: l’header, che contiene i dati relativi al tipo di algoritmo usato per la codifica, il payload, che contiene i dati in formato JSON codificati e una signature (firma) che garantisce la veridicità del token.
Oltre ai claim di default contenuti nel payload del token è possibile aggiungere ulteriori claim custom: per maggiori informazioni a riguardo si rimanda alla pagina Authentication settings.
A basso livello, ogni richiesta HTTP alla API deve includere l’header Authorization: Bearer <MyToken>
; il token è ottenuto effettuando una richiesta di tipo POST all’endpoint della Cloudlet:
https://<CloudletURL>/public/token/getJwtToken?format=<format>
Attraverso il parametro format
è possibile specificare il formato del body della richiesta: json
(default) o xml
.
Nel body della richiesta devono essere specificati username e password alternativamente in formato JSON o XML, come nell’esempio di seguito per l’utente con username
“a1” e password
“test”
{"username":"a1","password":"test"}
<credentials><username>a1</username><password>test</password></credentials>
Il token così ottenuto può essere utilizzato sino alla scadenza specificata nell’attributo exp
del payload. Per controllare il payload del token è possibile usare lo strumento di debug fornito da JWT.
Prima della scadenza di un token è possibile rinnovarlo, ottenendo un nuovo token, effettuando una richiesta di tipo GET all’endpoint della Cloudlet:
https://<CloudletURL>/auth/token/refreshJwtToken
specificando nell’header Authorization: Bearer <MyToken>
il token in scadenza.
Per ulteriori dettagli sui servizi REST esposti dalla Cloudlet per la gestione dei token si rimanda alla pagina.
Basic Authentication #
In un sistema HTTP Basic, le credenziali per autenticare l’utente viaggiano con ogni richiesta verso il server, in un apposito header, e possono essere memorizzate dal browser. Questo implica che il logout è possibile solo dopo un periodo di inattività , o rimuovendo manualmente le credenziali memorizzate lato browser.
A basso livello, ogni richiesta HTTP alla API deve includere l’header Authorization: Basic <MyToken>
; il token è risultato dell’encoding Base64 della stringa <Username>:<Password>
; se si utilizza cURL è necessario quindi specificare sempre l’header come mostrato sopra. Librerie a più alto livello, come Apollo, vanno configurate opportunamente fornendo il token di autenticazione.