it-swarm-eu.dev

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.

459
csharpbaby

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 utilizza quel token per l'ulteriore autenticazione durante la sessione.

I vantaggi sono molti - ad esempio, l'utente può passare il token, una volta ottenuto, su un altro sistema automatizzato di cui è disposto a fidarsi per un tempo limitato e un insieme limitato di risorse, ma dovrebbe non essere disposto a 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.

495
Alex Martelli

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: cookies + CORS non funzionano bene tra domini diversi. Un approccio basato sui token consente di effettuare AJAX chiamate a qualsiasi server, su qualsiasi dominio perché si utilizza un'intestazione HTTP per trasmettere le informazioni dell'utente.

  • Stateless (a.k.a. Scalabilità lato server): non è necessario mantenere un archivio di sessioni, il token è un'entità 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 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.

  • Mobile ready: 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 molto questo.

  • CSRF: dal momento che non si sta facendo affidamento sui cookie, non è necessario proteggere dalle richieste cross site (ad esempio, non sarebbe possibile sibare il proprio sito, generare un POST richiede e riutilizza il cookie di autenticazione esistente perché non ce ne saranno).

  • Performance: non presentiamo qui benchmark perfetti, ma è probabile che un roundtrip di rete (ad es. Trovare una sessione sul database) richieda più tempo del calcolo di un HMACSHA256 per convalidare un token e analizzando i suoi contenuti.

167
Asik

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

Potresti presentare i tuoi dati di accesso e chiedere Server X per un token; e quindi potresti presentare token e chiedere a Server X di eseguire qualche azione specifica dell'utente.

Tokens sono 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 creare il tuo sistema token, dovresti essere davvero intelligente.

91
yfeldblum

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, nonché 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 autorizzazione o attività di controllo per richieste successive dell'utente.

visita la fonte

40
DeepakK

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 all'edificio, potrebbe essere la chiave della serratura di casa tua. Per poter 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 avere accesso al mio ufficio. Vado all'ufficio di sicurezza, mostro loro il mio documento d'identità e mi danno questo gettone, che mi fa entrare nell'edificio. Ora ho accesso illimitato per fare 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.

21
Ahmer Ali Ahsan

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

14
Ray Hulha

È solo un hash che è associato all'utente nel database o in un altro modo. Questo token può essere utilizzato per autenticare e quindi autorizzare un utente a accedere ai contenuti 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.

3
Hardik Patel

Quando ti registri per un nuovo sito web, spesso ti viene inviata un'email per attivare 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 attivare il tuo account. Nulla di tutto ciò sarebbe possibile con i cookie o le variabili di sessione, poiché è sconosciuto quale dispositivo o browser il cliente sta utilizzando per controllare le e-mail.

0
user3094826