Immagina di avere un servizio che implementa un flusso di OAuth 2.0 per consentire agli utenti finali di accedere ad app di terze parti e autorizzare tali app a utilizzare i dati del tuo servizio tramite alcune API.
Dopo aver autenticato con successo un'app di terze parti tramite il flusso OAuth, il servizio invia l'app di terze parti a un token al portatore che autentica (e autorizza) l'app di terze parti (a nome dell'utente finale) per utilizzare l'API del servizio.
Tale token al portatore deve essere memorizzato sui tuoi server, al fine di eseguire l'autenticazione per le chiamate API in arrivo. Poiché il token proprietario autentica (e autorizza) i client, è necessario archiviarlo in modo sicuro, come se si memorizzasse una password.
Tuttavia, mentre le password vengono salate + hash prima di salvarle su disco, vengono anche ricercate dal loro corrispondente principale (nome utente / indirizzo email), piuttosto che dalla rappresentazione sicura della password.
Nel caso di un token al portatore, non esiste un principio da utilizzare per cercare credenziali / token corrispondenti. Supponendo che desideri memorizzare token al portatore come le password (salted + hash), dovresti cercare ogni possibile sale, applicarli a ciascuno, quindi hash il token salato e quindi verificare se esiste in qualsiasi punto del tuo sistema. Quello non scala.
Quindi la mia domanda è: come puoi archiviare in modo sicuro i token bearer sul tuo server? Cioè, senza dover generare ogni possibile rappresentazione sicura di esso ogni volta che è necessario verificare un token.
Con "deposito sicuro di token bearer", intendo che un attaccante che ottiene il file di tutti i token bearer memorizzati in modo sicuro non sarà in grado di usarli.