Mi rivolgo a voi, creatori di software quale app per smartphones, siti web mobile o programmi desktop: succede spesso di dover creare un Login per il vostro servizio, e magari vorreste che i vostri utenti utilizzino il classico metodo utente-password, o magari il numero di cellulare a cui verrà inviato il codice, o ancora forse vorrete dare la possibilità di loggarsi con l’account di Google, Facebook o altri servizi.
E in tutto ciò non avete tempo per creare un backend completo, con un database apposito. Ecco che arriva Auth0!
Auth0 è un servizio che vi dà a disposizione un sistema di autenticazione già fatto, personalizzabile tramite impostazioni o tramite script javascript già preparati per voi.
(Prenderò l’esempio di un’app android, ma il discorso vale per ogni app/sito/programma)
Una volta creata la vostra app, non dovrete far altro che inserire pochissime linee di codice (scritte nel tutorial di Auth0, sul loro sito), e automaticamente all’avvio dell’app vi troverete una schermata del genere:
Ovviamente è completamente personalizzabile tramite HTML, potete fare anche in modo che l’utente utilizzi il numero di telefono per l’appunto, oppure usare (come in foto) il classico metodo email-password, potete usare Facebook, Google o Twitter, o moltissimi altri disponibili sul sito di Auth0, potete decidere di loggarvi (Log In) oppure iscrivervi (Sign Up), potete esservi “dimenticati la password”, e cosi via.
Una volta effettuato il Login, verrà mostrata la schermata della vostra app, e voi potrete ottenere le informazioni base dell’utente, quali il nome, l’email, e così via.
Mettiamo ora caso che la vostra app faccia uso di API scritte da voi. Come fare in modo che alcune API siano accessibili solo previo login?
Per esempio, se avete un’app come Evernote o Google Keep, che permette di scrivere delle note e tenerle sincronizzate su diversi dispositivi, allora avrete scritto o comunque a disposizione delle API che vi permettono di ottenere le note dell’utente (magari con GET /notes) e di scriverne (POST /notes/create).
Bene, dipendentemente se le API sono state scritte in PHP o Node.JS o altri linguaggi, comunque Auth0 ha a disposizione una libreria apposta che vi permette di scrivere appena un linea in più affinchè l’utente debba essere autenticato. Ovviamente dall’app dovrete, insieme all’API, inviare il token ottenuto dall’autenticazione. Ecco un esempio in Node.Js usando Express (abbiamo omesso il codice di inizializzazione di express e body-parser visto che è sempre lo stesso):
var jwt = require('express-jwt'); var jwtCheck = jwt({ secret: new Buffer('app secret preso dal sito Auth0', 'base64'); }); app.get('/notes', jwtCheck, function(req, res) { // req.user contiene tutte le informazioni base dell'utente console.log(req.user); // req.user.sub (subject) contiene l'identificatore univoco dell'utente res.json(notes[req.user.sub]); }); }); app.post("/notes/create", jwtCheck, function(req, res) { // req.user contiene tutte le informazioni base dell'utente console.log(req.user); // req.user.sub (subject) contiene l'identificatore univoco dell'utente notes[req.user.sub].push(req.body.note); res.json({}); }); });
Come funziona? Semplicemente sia per la get che per la post prima di chiamare la funzione evidenziata in blu, viene invocata jwtCheck, la quale verifica che l’utente sia autenticato. Dopodiché jwtCheck aggiorna la variabile req aggiungendogli l’oggetto user, con le informazioni sull’utente loggato, e quindi viene invocata la funzione in blu.
NB: si presuppone che la post abbia un corpo formato da un json così fatto: {note: “nota scritta dall’utente”}
Se quindi volete una libreria che vi permetta di autenticare gli utenti sia in frontend che backend, allora Auth0 è perfetta.
Ovviamente esistono molti altri servizi che fanno quello che fa Auth0, come Stormpath o Google Firebase (che fa mille altre cose), ma questo mi è sembrato il più semplice, il più completo e più personalizzabile rispetto ai concorrenti.
Auth0 è gratuito con 2 settimane gratis di account premium, ma anche senza premium è utilizzabilissimo.
Potete trovare tutte le informazioni sul sito di Auth0.
Attualmente la sezione Pricing contiene queste informazioni:
Seguiteci anche su Facebook, Google Plus, Tumblr, Twitter e Telegram , per restare sempre in contatto con noi e con le nostre guide.