-
In Autenticazione basata sulla sessione il server esegue tutte le operazioni di sollevamento dal lato server. In generale, un client si autentica con le sue credenziali e riceve un session_id (che può essere memorizzato in un cookie) e lo allega ad ogni successiva richiesta in uscita. Quindi questo potrebbe essere considerato un "token" in quanto è l'equivalente di un insieme di credenziali. Tuttavia, non c'è niente di speciale in questo session_id-String. È solo un identificatore e il server fa tutto il resto. È stato. Associa l'identificatore con un account utente (ad es. In memoria o in un database). Può limitare o limitare questa sessione a determinate operazioni o un certo periodo di tempo e può invalidarla se ci sono problemi di sicurezza e, cosa più importante, può fare e modificare tutto questo al volo. Inoltre, può registrare gli utenti ogni mossa sui siti Web. I possibili svantaggi sono la cattiva capacità di scalabilità (specialmente su più di una server farm) e l'uso intensivo della memoria.
-
In Autenticazione basata su token nessuna sessione è persistente lato server (senza stato). I passi iniziali sono gli stessi. Le credenziali vengono scambiate con un token che viene poi allegato a ogni richiesta successiva (può anche essere memorizzato in un cookie). Tuttavia, al fine di ridurre l'utilizzo della memoria, la facilità di scalabilità e la flessibilità totale (i token possono essere scambiati con un altro client) viene emessa una stringa con tutte le informazioni necessarie (il token) che viene verificata dopo ogni richiesta fatta dal cliente al server. Esistono diversi modi per utilizzare / creare token:
a) utilizzando un meccanismo di hash ad es. HMAC-SHA1
token = user_id|expiry_date|HMAC(user_id|expiry_date, k)
- id e expiry_id sono inviati in chiaro con l'hash risultante allegato (k è noto solo al server)
b) crittografare il token simmetricamente, ad es. con AES
token = AES(user_id|expiry_date, x)
- x rappresenta la chiave en / decryption
c) crittografandolo asimmetricamente, ad es. con RSA
token = RSA(user_id|expiry_date, private key)
I sistemi produttivi sono in genere più complessi di questi due archetipi. Ad esempio, Amazon utilizza entrambi i meccanismi sul proprio sito web. Anche gli ibridi possono essere utilizzati per emettere token come descritto in 2 e anche associare una sessione utente con esso per il tracciamento degli utenti o la possibile revoca e mantenere comunque la flessibilità del client dei token classici. Inoltre, OAuth 2.0 utilizza token al portatore a vita breve e specifici e token di aggiornamento a vita più lunga, ad es. per ottenere segnalini portatori.
Fonti: