In base al vincolo stateless di REST, non è possibile mantenere sessioni sul lato server. Devi invece autenticare ogni richiesta.
Ci sono 2 tipi di client:
- client fidati sviluppati da te (lo sviluppatore del servizio web)
- Client di terze parti sviluppati da chiunque altro
Da un client fidato la soluzione più semplice per inviare nome utente e password ad ogni singola richiesta. Ad esempio, l'autenticazione HTTP di base in un'intestazione HTTP. (Ofc con connessione crittografata.)
Dato che il tuo utente non può fidarsi dei client di terze parti con la sua password, devi scoprire qualcos'altro da lì. Una soluzione tipica (ad esempio Facebook) per aggiungere una chiave API univoca a ciascuno dei client di terze parti. Dopodiché, quando l'utente vuole usarne uno, riceve una richiesta. Utilizzando tale richiesta, può concedere l'accesso al client di terze parti per utilizzare parte del suo account. Durante questo processo, accessToken, userId, apiKey, permissions
viene salvata sul server e il client di terze parti ottiene un token di accesso per l'utente. Successivamente, il client di terze parti può utilizzare il token di accesso (insieme alla chiave API e all'ID utente) per utilizzare il servizio Web che utilizza l'account dell'utente.