Quali sono i vantaggi per la sicurezza rispetto a un modello di sicurezza dell'API basato su token rispetto all'invio del nome utente & password ogni volta?
Il processo dell'approccio basato su token è:
- Invia una richiesta di "accesso" con nome utente e password
- Ricevi un token
- Utilizza il token al posto del nome utente / password per tutte le richieste successive
I vantaggi di un sistema basato su token (in base a questo link ) sono:
- Scalabilità
- Tecnologia ad accoppiamento lento
- Mobile friendly
Tuttavia, non sono sicuro del motivo per cui questi vantaggi sono specifici per un approccio basato su token piuttosto che inviare lo username / password ogni volta? Non è altrettanto facile aggiungere successivamente i server Web a un cluster? La verifica della password viene ancora eseguita in entrambi i casi, quindi il lato client è altrettanto sciolto?
Vantaggi? È semplicemente che il nome utente / password non devono essere "controllati" ogni volta e possiamo fare una ricerca più semplice basata su un elenco di chiavi di sessione? Mentre questo è un miglioramento delle prestazioni, aggiunge una maggiore complessità all'applicazione client e ulteriori complessità se c'è un timeout sul token in cui il client dovrebbe controllare se il token è ancora valido?
Svantaggi? Gli svantaggi con un nome utente / password inviati con ogni richiesta che con sempre più trasmissioni di questi dati diventa più probabile che possa essere scoperto? In tal caso, HTTPS non è abbastanza robusto da contrastare questa minaccia?
EDIT: Ho letto questo potenziale duplicato: Perché utilizzare un token di autenticazione al posto del nome utente / password per richiesta? ma sono un po 'insicuro perché il punto 2 afferma che il nome utente / password verrebbero memorizzati come cookie. Perché il computer client dovrebbe mantenere il nome utente / password come cookie e non includerlo nel contenuto del post stesso?