API Auth vs User Auth

6

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?

    
posta Paul Sylling 07.09.2012 - 04:21
fonte

1 risposta

1

Sto cercando di implementare un approccio simile. Le tecnologie sono diverse, ma i concetti sono gli stessi.

Fondamentalmente, ho:

  • Applicazione Web ASP.NET MVC 4, che utilizza OAuth (che a mio avviso utilizza l'API DotNetOpenAuth )
  • API Web ASP.NET (REST), nello stesso "spazio" come sopra, autorizzazione tramite token di intestazione
  • Applicazione dispositivo mobile, autentica tramite OAuth

Quando l'applicazione per dispositivi mobili si autentica tramite OAuth, fornisco un callback a un metodo nell'API Web che controlla che l'utente esista e abbia accesso e restituisca un token generato.

Le chiamate successive da Mobile Device Application all'API Web inviano il token nell'intestazione (su SSL) e quindi vengono autorizzate o meno per chiamata.

In questo caso non stiamo persistendo il token oltre la sessione attiva corrente, dopo di che l'utente dovrebbe autenticarsi di nuovo.

OAuth utilizzato in questo esempio, ma potrebbe essere qualsiasi altro meccanismo di autenticazione, che fornisce un token che verrebbe utilizzato per l'autorizzazione.

Sembra la stessa soluzione che stai osservando e sembra funzionare bene durante alcuni test iniziali.

Aggiornamento: il seguente è un ottimo riferimento per questo tipo di cose: Applicazione WPF con Live ID, Facebook, Google, Yahoo !, ID aperto

    
risposta data 18.09.2012 - 06:53
fonte

Leggi altre domande sui tag