Ho letto molti post e articoli su questo argomento, ma non riesco ancora a collegare i punti. Voglio fare un'app Rails che sia strettamente un'API JSON magari usando Sinatra o la gemma rails-api. Voglio anche fare sia un'app client web che un'app per iPhone che consuma l'API. Non è previsto l'utilizzo di sviluppatori di terze parti.
Quindi potrei creare una combinazione di nome utente / password separata per il client web e mobile e utilizzare HTTP Basic su SSL. Ogni app dovrebbe avere questi valori come configs nell'origine e usarla per autenticare l'API in modo che solo questi possano effettuare una chiamata. Chiunque altro provasse otterrebbe un errore 401 restituito. Questo sarebbe considerato come gestire l'autenticazione API.
Le app web e client mobili consentono agli utenti finali di registrarsi e leggere / scrivere dati nell'API. Quando viene creato ogni utente, creo e salvi un token nel loro profilo. Se un utente accede con successo, rimando il token. Su ogni futura lettura / scrittura, quindi, invia anche questo token nell'intestazione. Ottengo il token e cerco l'utente nel database e faccio il read / write.
Questo suona come un modo appropriato per gestirlo. Per il client web, quando inizialmente rimando il token, dove lo memorizzo. In un biscotto? Devo anche rilasciare un cookie per gestire lo stato della sessione?