2012-02-10 15 views
5

Ho una webapp che esegue molte richieste di ajax con il server php e il server di database. Ho anche creato un'app per iPhone e un'app per Android, che fino ad ora hanno funzionato come app offline.OAuth: caso d'uso implementazione OAuth

Ora voglio creare un'API che verrà utilizzata per sincronizzare i dati tra il web server e le app per smartphone. Dovrei usare OAuth per questo? Quello che ho letto su OAuth - sembra che venga usato se voglio aprire la mia API per essere utilizzata da app di terze parti. Ma qui voglio solo garantire un trasferimento sicuro dei dati tra l'API e le mie app.

Qualcuno può far luce su questo?

risposta

4

L'utilizzo principale di OAuth consiste nel rendere le app di terze parti autorizzate ad accedere a risorse private di un utente su un sito Web senza fornire le credenziali dell'utente all'app di terze parti. Ad esempio, supponi che Twitter desideri ottenere l'elenco dei contatti dal tuo account Yahoo. Il modo tradizionale è quello di fornire il nome utente e la password a Twitter. Ma con OAuth, si dà loro un segnale temporaneo (chiamato Access Token) che autorizza Twitter accedere ai tuoi contatti su Yahoo per un periodo di tempo limitato (fino a quando questo token scade o voi, come il proprietario della risorsa privata, in modo esplicito revocarlo).

Detto questo, OAuth non riguarda la trasmissione sicura dei dati sul web. Questa è un'altra storia che viene solitamente ottenuta usando SSL. Anche quando si utilizza OAuth, è necessario utilizzare SSL insieme per assicurarsi che i dati vengano inviati e ricevuti in modo sicuro.

Quindi nel tuo caso, devi vedere a cosa serve l'API. Se si tratta di un'API pubblica che non fornisce dati personali ai chiamanti, non è necessario utilizzare OAuth. Se l'API è per accedere alle risorse private dei singoli utenti, tuttavia, puoi prendere in considerazione l'utilizzo di OAuth. Se si sceglie di implementare OAuth, è possibile consentire ad altre app di terze parti di accedere alla propria API in futuro senza alcun problema.

0

Molto dipende dalla modalità di protezione dell'API. La tua API è aperta al pubblico, specialmente gli URL dei post? Se i tuoi dati non sono qualcosa che ogni utente dovrebbe vedere, allora come stai controllando l'autenticazione delle credenziali dell'utente?

La cosa più importante è che dovremmo evitare di condividere il nome utente e la password via cavo per verificare sempre l'autenticazione. Ciò significa che la tua API non dovrebbe richiedere nome utente e password per convalidare se l'utente è valido. Che puoi fare inviando il nome utente e la password dal dispositivo mobile o id del dispositivo o qualche altra cosa.

In tale situazione, il server OAuth viene in soccorso. Fondamentalmente, su un URL un utente invierà il suo nome utente e password per ottenere il suo token di accesso. Una volta acquisito, possiamo utilizzare il token di accesso per convalidare ogni richiesta e intraprendere le azioni necessarie.

È possibile fare riferimento ai video in cui ho implementato il server OAuth in Laravel 5 utilizzando bshaffer che è una delle migliori librerie OAuth per qualsiasi framework PHP per l'utente. https://www.youtube.com/watch?v=0vGXbWdtjls