Cos’è l’autenticazione basata su token?

Voglio capire cosa significa autenticazione basata su token. Ho cercato su internet ma non ho trovato nulla di comprensibile.

Penso che sia ben spiegato qui – citando solo le frasi chiave del lungo articolo:

Il concetto generale alla base di un sistema di autenticazione basato su token è semplice. Consenti agli utenti di immettere il nome utente e la password per ottenere un token che consenta loro di recuperare una risorsa specifica, senza utilizzare nome utente e password. Una volta ottenuto il token, l’utente può offrire il token, che offre l’accesso a una risorsa specifica per un periodo di tempo, al sito remoto.

In altre parole: aggiungi un livello di riferimento indiretto per l’autenticazione – invece di dover autenticare con nome utente e password per ogni risorsa protetta, l’utente autentica in questo modo una volta (all’interno di una sessione di durata limitata), ottiene in cambio un token limitato nel tempo e usa quel token per l’ulteriore autenticazione durante la sessione.

I vantaggi sono molti – ad esempio, l’utente può passare il token, una volta ottenuto, a un altro sistema automatizzato di cui è disposto a fidarsi per un tempo limitato e un insieme limitato di risorse, ma non sarebbe disposto fidarsi del proprio nome utente e password (cioè, con ogni risorsa a cui è consentito accedere, per sempre o almeno finché non cambiano la password).

Se qualcosa non è ancora chiaro, ti preghiamo di modificare la tua domanda per chiarire cosa non ti è chiaro al 100%, e sono certo che possiamo aiutarti ulteriormente.

Da Auth0.com

Autenticazione basata su token, si basa su un token firmato che viene inviato al server in ogni richiesta.

Quali sono i vantaggi dell’utilizzo di un approccio basato sui token?

  • Cross-domain / CORS: i cookie + CORS non funzionano bene tra domini diversi. Un approccio basato sui token ti consente di effettuare chiamate AJAX su qualsiasi server, su qualsiasi dominio perché utilizzi un’intestazione HTTP per trasmettere le informazioni dell’utente.

  • Stateless (ovvero scalabilità lato server): non è necessario mantenere un archivio di sessioni, il token è un’entity framework autonoma che trasmette tutte le informazioni dell’utente. Il resto dello stato vive nei cookie o nella memoria locale sul lato client.

  • CDN: puoi servire tutte le risorse della tua app da un CDN (ad esempio javascript, HTML, immagini, ecc.) E il tuo lato server è solo l’API.

  • Disaccoppiamento: non sei legato a nessun particolare schema di autenticazione. Il token potrebbe essere generato ovunque, quindi la tua API può essere chiamata da qualsiasi luogo con un unico modo per autenticare quelle chiamate.

  • Predisposto per dispositivi mobili: quando si inizia a lavorare su una piattaforma nativa (iOS, Android, Windows 8, ecc.) I cookie non sono ideali quando si utilizza un approccio basato su token che semplifica notevolmente questo aspetto.

  • CSRF: dato che non si sta facendo affidamento sui cookie, non è necessario proteggersi dalle richieste cross site (ad esempio, non sarebbe ansible sibare il proprio sito, generare una richiesta POST e riutilizzare il cookie di autenticazione esistente perché non ci sarà nessuno ).

  • Prestazioni: non stiamo presentando alcun benchmark perf perfetti, ma un roundtrip di rete (ad esempio, trovare una sessione sul database) richiederà probabilmente più tempo del calcolo di un HMACSHA256 per convalidare un token e analizzarne il contenuto.

Un token è un pezzo di dati che solo il Server X potrebbe aver creato e che contiene abbastanza dati per identificare un particolare utente.

Potresti presentare i tuoi dati di accesso e chiedere al Server X un token ; e quindi potresti presentare il tuo token e chiedere al Server X di eseguire qualche azione specifica dell’utente.

Token vengono creati utilizzando varie combinazioni di varie tecniche dal campo della crittografia e con input dal più ampio campo della ricerca sulla sicurezza. Se decidi di andare e creare il tuo sistema di token , dovresti essere davvero intelligente.

Un token è un pezzo di dati creato dal server e contiene informazioni per identificare una particolare validità di un utente e di un token. Il token conterrà le informazioni dell’utente, oltre a un codice token speciale che l’utente può passare al server con ogni metodo che supporta l’autenticazione, invece di passare direttamente un nome utente e una password.

L’autenticazione basata su token è una tecnica di sicurezza che autentica gli utenti che tentano di accedere a un server, una rete o un altro sistema sicuro, utilizzando un token di sicurezza fornito dal server.

Un’autenticazione ha esito positivo se un utente può dimostrare a un server di essere un utente valido passando un token di sicurezza. Il servizio convalida il token di sicurezza ed elabora la richiesta dell’utente.

Dopo che il token è stato convalidato dal servizio, viene utilizzato per stabilire il contesto di sicurezza per il client, in modo che il servizio possa prendere decisioni di authorization o attività di controllo per richieste successive dell’utente.

visita la fonte

La domanda è vecchia e la tecnologia è avanzata, ecco lo stato attuale:

JSON Web Token (JWT) è uno standard aperto basato su JSON (RFC 7519) per il passaggio di rivendicazioni tra le parti nell’ambiente dell’applicazione Web. I token sono progettati per essere compatti, sicuri per URL e utilizzabili in particolare nel contesto SSO (single sign-on) del browser web.

https://en.wikipedia.org/wiki/JSON_Web_Token

Basato su token (sicurezza / autenticazione)

significa che per dimostrare che abbiamo accesso, dobbiamo prima ricevere il token. In uno scenario di vita reale, il token potrebbe essere una carta di accesso alla costruzione, potrebbe essere la chiave della serratura di casa tua. Affinché tu possa recuperare una chiave magnetica per il tuo ufficio o la chiave della tua casa, devi prima dimostrare chi sei e che in effetti hai accesso a quel token. Potrebbe essere qualcosa di semplice come mostrare a qualcuno il tuo ID o dare loro una password segreta. Quindi immagina di aver bisogno di accedere al mio ufficio. Vado all’ufficio di sicurezza, mostro loro il mio documento d’id quadro e mi danno questo gettone, che mi fa entrare nell’edificio. Ora ho l’accesso illimitato per fare tutto ciò che voglio all’interno dell’edificio, purché abbia il mio token con me.

Qual è il vantaggio della sicurezza basata su token?

Se ripensiamo all’API insicura, ciò che dovevamo fare in quel caso era che dovevamo fornire la nostra password per tutto ciò che volevamo fare.

Immagina che ogni volta che entriamo in una porta nel nostro ufficio, dobbiamo dare a tutti seduti accanto alla nostra password. Ora sarebbe molto brutto, perché ciò significa che chiunque nel nostro ufficio potrebbe prendere la nostra password e impersonare noi, e questo è piuttosto brutto. Invece, quello che facciamo è che recuperiamo il token, ovviamente insieme alla password, ma lo recuperiamo da una sola persona. E poi possiamo usare questo gettone ovunque vogliamo all’interno dell’edificio. Ovviamente, se perdiamo il token, abbiamo lo stesso problema che se qualcun altro conoscesse la nostra password, ma che ci porta in cose come in che modo ci assicuriamo che se perdiamo il token, possiamo revocare l’accesso, e forse il token non dovresti vivere più a lungo di 24 ore, quindi il giorno dopo che veniamo in ufficio, dobbiamo mostrare di nuovo il nostro ID. Ma comunque, c’è solo una persona a cui mostriamo l’ID, e quella è la guardia di sicurezza seduta dove recuperiamo i token.

È solo una stringa di numero predefinito di caratteri che è associato all’utente nel database o in un altro modo. Questo token può essere utilizzato per autorizzare un utente ad accedere ad altri contenuti correlati dell’applicazione. Per recuperare questo token sul lato client è richiesto l’accesso. Dopo il primo accesso è necessario salvare il token recuperato non altri dati come la sessione, l’id della sessione perché qui tutto è token per accedere ad altre risorse dell’applicazione.

Il token è usato per assicurare l’autenticità dell’utente.

Quando ti registri per un nuovo sito web, spesso ti viene inviata una mail per triggersre il tuo account. Quella e-mail in genere contiene un link per fare clic su. Parte di quel link, contiene un token, il server conosce questo token e può associarlo al tuo account. Il token di solito ha una data di scadenza associata, quindi potresti avere solo un’ora per fare clic sul link e triggersre il tuo account. Nulla di tutto ciò sarebbe ansible con i cookie o le variabili di sessione, poiché non si sa quale dispositivo o browser utilizza il cliente per controllare le e-mail.