L'idea alla base di OAuth è che come servizio non è necessario conoscere le credenziali (ancora una volta) per autenticare e personalizzare il servizio.
Hai ragione nel senso che i token al portatore (parte di OAuth 2 in fatto) sono altrettanto sensibili come username / password. ma così è un hash di esso.
L'idea è che con OAuth 2 tu collabori con il provider di server OAuth 2, il server, piuttosto che tu (o di fatto l'applicazione con cui esegui l'autenticazione) un insieme di token da utilizzare.
- Token al portatore, token di breve durata da utilizzare direttamente per le richieste autenticate.
- Aggiorna token, token longevo per ottenere un nuovo token bearer.
L'applicazione OAuth li usa insieme ai propri segreti preregistrati (Application ID e Application Key) e una connessione TLS (https) per mantenere le cose sicure e segrete.
Il risultato finale è uno schema che è almeno sicuro quanto lo schema di accesso del provider di servizi OAuth,
senza dover mantenere un nuovo set di credenziali e senza dover rivelare le credenziali all'eventuale terza parte che è il servizio client OAuth.
Come bonus, non vi è alcun obbligo per il client di utilizzare TLS e avere ancora un accesso sicuro
(anche se consiglio vivamente TLS per qualsiasi applicazione web).
E quando vengono utilizzate le "concessioni" è possibile limitare le informazioni per le quali i token possono essere utilizzati,
come Facebook, Google e Github mostrano utenti che si autenticano con oauth.
La seguente immagine tratta da Wikipedia mostra come oauth funziona in modo diverso rispetto agli schemi di username / password e perché può essere vantaggioso.