vai al contenuto principale

Autenticazione nativa

Livebase mette a disposizione un sistema di autenticazione HTTP Basic per il client GraphiQL e cookie based.

Il sistema di autenticazione nativa di Livebase è di tipo HTTP Basic per il client GraphiQL, e di tipo cookie based.

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.

In un sistema cookie based, quando un utente si autentica presso un server usando il protocollo HTTP, questo genera un oggetto di sessione e invia, tramite cookie, l’identificativo di questo oggetto (sessionID) al client perché venga memorizzato localmente. Ogni volta che il client effettua una richiesta al server, deve includere il cookie con il sessionID per ricordargli il suo passaggio. Per effettuare il logout, il client invia una richiesta esplicita al server, il quale invalida l’oggetto di sessione e ordina al client di eliminare il cookie con il sessionID.

Profili e utenti #

Un profilo è un’identità definita nel modello di una Cloudlet, a cui è associato un Profile Schema che ne elenca i permessi sulle risorse, quali le applicazioni e gli oggetti. Per “utente” intendiamo un qualunque utente che sia registrato presso la Cloudlet stessa.

Ad ogni utente può essere assegnato un solo profilo, che gli conferisce tutti i permessi che sono definiti nel relativo Profile Schema.

Utenti regolari e default member #

In Livebase, gli utenti di una Cloudlet sono istanze della classe di piattaforma __User e vivono all’interno del database della Cloudlet. Nel momento in cui questo è generato per la prima volta, viene creato un default member con lo stesso nome utente e password dell’account Livebase attualmente in uso, e a esso viene assegnato il profilo Member, che garantisce pieno accesso a tutte le classi del modello, eccetto la classe __User. Se il database è svuotato o eliminato, è possibile creare nuovamente il default member facendo clic prima sull’icona e poi sul pulsante Create Member.

Members of the cloudlet

Create member

Procedura di autenticazione #

Vediamo nel dettaglio la procedura da seguire per autenticarsi presso il client GraphiQL di una Cloudlet Livebase.

Autenticarsi con GraphiQL #

Per accedere al client GraphiQL, assicurati che le API GraphQL siano abilitate, facendo clic sul pulsante e controllando che il relativo interruttore del pannello API & Public URLs sia impostato su On:

Api & Public URLs panel

Quindi, apri un browser e naviga al seguente URL:

https://<CloudletURL>/auth/api/graphql/asset/index.html

Se non ci sono credenziali memorizzate, un messaggio di avviso richiederà username e password:

Basic HTTP Auth Alert

Compila i campi richiesti e fai clic su Accedi: se l’autenticazione ha successo visualizzerai l’ambiente GraphiQL e potrai effettuare chiamate agli endpoint con i permessi dell’utente con cui hai effettuato l’accesso; in caso contrario il messaggio di avviso verrà nuovamente mostrato chiedendo di digitare nuovamente le credenziali.

Abilitare nuovi utenti #

Per poter abilitare altri utenti all’accesso della Cloudlet, è necessario svolgere queste operazioni:

  • rendere visibile la classe __User nel modello: questo richiede di includerla nel Database Schema e di abilitarla in almeno una vista applicativa;
  • concedere i privilegi di creazione degli utenti ad almeno uno dei profili definiti.

I primi due passaggi sono dettagliati rispettivamente nel paragrafo Creare la classe __User della sezione Classe __User, e nel paragrafo Diritti della Classe __User della sezione Diritti (grant). La sezione seguente illustra la procedura di accesso e di creazione di nuovi utenti da GraphQL.

Creare utenti in GraphiQL #

Accedi alla Dashboard e avvia una Cloudlet con le GraphQL abilitate (vedi il paragrafo Procedura di autenticazione).

Accedi al client GraphiQL con il seguente URL:

https://<CloudletURL>/auth/api/graphql/asset/index.html

Effettua il login come un utente con i permessi di creazione sulla classe __User, quindi sottometti la seguente mutation di tipo create:

mutation {
  _User___create(data : {
    username : <newUserName>,
    profile : <newUserProfile>,
    email : <newUserEmail>
  }) {
    _id
  }
}

I campi username, profile e email devono essere rispettivamente compilati con il nome utente, il profilo da assegnare, e l’email di riferimento del nuovo utente. È necessario anche specificare un elenco di selection fields, ovvero i campi del nuovo oggetto creato che si vuole vengano mostrati nella risposta. Nell’esempio è stato richiesto il solo campo _id.

Se l’operazione va a buon fine, si ottiene una risposta come quella mostrata in figura, e il link per impostare la password viene inviato all’indirizzo email specificato.

{
  "data": {
    "_User___create": {
      "_id": <newUserId>
    }
  }
}