Voglio capire cosa significa autenticazione basata su token. Ho cercato su internet ma non ho trovato nulla di comprensibile.Che cos'è l'autenticazione basata su token?
risposta
A token
è un dato che solo Server X
potrebbe aver creato e che contiene dati sufficienti per identificare un particolare utente.
È possibile presentare le informazioni di accesso e chiedere Server X
per un token
; e quindi potresti presentare il tuo token
e chiedere a Server X
di eseguire qualche azione specifica dell'utente.
Token
s vengono creati utilizzando varie combinazioni di varie tecniche dal campo della crittografia, nonché con l'input dal più ampio campo della ricerca di sicurezza. Se decidi di andare a creare il tuo sistema token
, dovresti essere davvero intelligente.
In genere, se si desidera l'autenticazione basata su token, è necessario iniziare con OAuth. –
OAuth è certamente valido in un'applicazione basata sul Web.Ad esempio, le sessioni di login del sistema operativo utilizzano anche i sistemi di token, così come molti altri tipi di programmi software, quindi questa idea non è limitata al Web. – yfeldblum
Probabilmente anche un token è preferibile per un sistema di assistenza clienti non pubblico. La società controlla il nome utente/password e problemi e controlla il token. – KevinManx
penso che sia ben spiegato here - citando solo le frasi chiave del lungo articolo:
Il concetto generale dietro un sistema di autenticazione basata su token è semplice. Consentire agli utenti di immettere il proprio nome utente e password per ottenere un token che consenta loro di ottenere di recuperare una risorsa specifica - senza utilizzando il proprio nome utente e password. Una volta ottenuto il token, l'utente può offrire il token - che consente l'accesso a una risorsa specifica per un periodo di tempo - al sito remoto .
In altre parole: Aggiungi un livello di indirezione per l'autenticazione - invece di dover autenticarsi con username e password per ogni risorsa protetta, l'utente si autentica in questo modo, una volta (in una sessione di durata limitata), ottiene un in cambio un token a tempo limitato, e usa quel token per un'ulteriore autenticazione durante la sessione.
vantaggi sono molti - ad esempio, l 'utente potrebbe passare il token, una volta che hanno ottenuto, a qualche altro sistema automatizzato che sono disposti a fidarsi per un tempo limitato e una serie limitata di risorse, ma sarebbe non essere disposti a fidarsi con il loro nome utente e password (vale a dire, con ogni risorsa che hanno il permesso di accedere, per sempre o almeno fino a quando non cambiano la loro password).
Se qualcosa non è ancora chiaro, si prega di modificare la domanda per chiarire CHE COSA non è al 100% chiaro per voi, e sono sicuro che possiamo aiutarvi ulteriormente.
Ho ragione nel ritenere che in un'applicazione web, uno (o più) cookie dal sito Web remoto svolga la funzione del token? – AJP
Dall'articolo W3 a cui si fa riferimento: "L'autenticazione Web tipica è basata su cookie ..." – AJP
@Alex Martelli hi se la connessione è su HTTPS fa una differenza per inviare token come parametro o nell'intestazione? – Spring
Un token è un pezzo di dati creato dal server e contiene informazioni per identificare una particolare validità di utente e 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ò provare 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.
Da Auth0.com
autenticazione basata su token, si basa su un token di firma che viene inviato al il server su ogni richiesta.
Quali sono i vantaggi dell'utilizzo di un approccio basato su token?
tra domini/CORS: biscotti + CORS non giocano bene in domini diversi. Un approccio basato su token consente di effettuare chiamate AJAX su qualsiasi server, su qualsiasi dominio, poiché si utilizza un'intestazione HTTP per trasmettere le informazioni dell'utente.
Stateless (scalabilità lato anche noto come server): non v'è alcuna necessità di mantenere un negozio di sessione, il token è un'entità indipendente che trasmette tutte le informazioni dell'utente. Il resto dello stato vive nei cookie o nella memoria locale sul lato client.
CDN: Potete servire tutte le attività della vostra applicazione da un CDN (ad esempio JavaScript, HTML, immagini, ecc), e il vostro 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ò chiamare da qualsiasi luogo con un unico modo per autenticare le chiamate .
mobile pronto: quando si inizia a lavorare su una piattaforma nativa (iOS, Android, Windows 8, etc.) i cookie non sono l'ideale quando si consumano un approccio basato su token semplifica questo un sacco.
CSRF: dal momento che non fa affidamento sui cookie, non occorre per la protezione contro le richieste del sito trasversali (ad esempio, non sarebbe possibile sib tuo sito, generare una richiesta POST e il riutilizzo del cookie di autenticazione esistente perché non ce ne saranno).
Performance: noi non presentiamo alcun benchmark difficile Potenza qui, ma un andata e ritorno di rete (ad esempio, trovare una sessione sul database) rischia di prendere più tempo di calcolo di un HMACSHA256 per convalidare un token e parsing sua contenuto.
@Asik Tutti i punti qui sono validi ad eccezione di "Stateless" quando si inizia a trattare di revoca di token, blacklist, prevenzione degli attacchi di risposta ecc. – svlada
Il sito citato raccomanda un articolo più recente sullo stesso argomento: https://auth0.com/blog/ cookie-vs-token-guida-definitivo/ – ASalazar
'statelessness' e 'performance' contengono tanto quanto non è necessario 'immediatamente' revocare il token. Altrimenti è necessario almeno un accesso db per chiamata API. –
E 'solo una stringa di numero predefinito di caratteri che è associato con l'utente nel database o in qualche 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 viene utilizzato per garantire l'autenticità dell'utente.
La domanda è vecchia e la tecnologia è avanzata, qui è lo stato attuale:
JSON Web Token (JWT) è uno standard aperto JSON-based (RFC 7519) per il passaggio di crediti tra le parti in ambiente applicativo web . I token sono progettati per essere compatti, sicuri per URL e utilizzabili in particolare nel contesto SSO (single sign-on) del browser web.
Al momento della registrazione per un nuovo sito web, spesso vengono inviati una e-mail per attivare l'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é non si sa quale dispositivo o browser utilizza il cliente per controllare le e-mail.
Token/collegamento a una volta è un concetto diverso rispetto all'autenticazione basata su token. –
Token Based (Sicurezza/autenticazione)
significa che in modo per noi di dimostrare che abbiamo l'accesso dobbiamo prima a 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'identità 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 sui 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.
Immaginate 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.
Ho letto molte descrizioni, ma sembravano tutti chiari su dettagli concreti. Questo articolo mi ha finalmente aiutato: https://scotch.io/tutorials/the-anatomy-of-a-json-web-token –