Sono solo uno studente, quindi perdonami se la mia comprensione è scarsa o le mie idee sono scarsamente espresse.
Voglio creare un'applicazione browser puramente client che funzioni con l'account Dropbox dell'utente. Vanno alla pagina, fanno clic su "Connect My Dropbox", concedono l'autorizzazione, recuperano il token di accesso e lo archiviano nella memoria locale. Quindi, l'applicazione effettuerà richieste direttamente all'API Dropbox per recuperare i contenuti di una determinata cartella e fare qualsiasi cosa: mostrare un editor Markdown per i loro file .md
o creare una galleria per le loro immagini, o qualcosa del genere.
La mia comprensione del flusso di OAuth è la seguente:
- Quando l'utente fa clic su "Collega il mio Dropbox", va ad es.
dropbox.com/auth?clientID=foo
- Se fanno clic su "consenti", Dropbox li reindirizza a ciò che ho specificato come URL di richiamata, con un codice di autorizzazione nella stringa di query
- Quando viene avviata una richiesta dall'utente al mio endpoint URL di richiamata, prendo il codice di autorizzazione e inviamo una richiesta a
dropbox.com/turn_auth_code_to_token?client_id=foo&client_secret=bar&auth_code=baz
- Dropbox mi restituisce un token che posso utilizzare per effettuare richieste API.
Se la mia comprensione è corretta, non è possibile per me creare un'applicazione che utilizza OAuth e non ha componenti sul lato server, perché trasformare il codice di autenticazione in un token di accesso richiede la fornitura del segreto del client. Se inserisco il segreto del cliente nel codice di front-end, chiunque può semplicemente estrarlo e fare cose oscure travestite da me.
È giusto?
In caso affermativo: sono tenuto a implementare almeno un server che ascolta le richieste per il mio URI di callback e restituisce i token di accesso? E da lì, gli utenti possono archiviare i propri token di accesso localmente e utilizzarli?