Autenticazione mobile di Google per le API REST

1

Quindi sto cercando di creare e proteggere un'API REST mobile su un server esistente che esegue la nostra app Web. Non apriremo l'API al pubblico e scriveremo l'app client utilizzando PhoneGap / Javascript / HTML. Potremmo usare molto bene HTTP Basic ma volevo qualcosa di più avanzato e sicuro. Non voglio utilizzare la sicurezza AWA di Amazon o di OAuth perché sembra che siano principalmente per l'apertura della tua API al pubblico o a una terza parte.

Sono davvero nuovo alle API REST e alla sicurezza, ma dopo aver fatto qualche ricerca ho intenzione di usarlo implementazione come scritto da Google. Riassumo l'idea generale:

  • L'utente invia le credenziali del server tramite un POST sicuro
  • Se le credenziali corrispondono. Il server crea un token, lo salva nel database, quindi lo invia all'utente. Il token sarà basato sull'UID utente dell'utente e un timestamp.
  • Il database memorizzerà l'ultima volta in cui l'utente ha cambiato la propria password e convaliderà solo le chiamate con i token che sono stati emessi dopo tale orario.
  • L'utente quindi invia questo token nell'intestazione con ogni chiamata API

Quanto è sicura questa implementazione? Come posso interrompere gli attacchi di forza bruta sul mio metodo di autenticazione? Qualsiasi altro suggerimento o raccomandazione è apprezzato.

    
posta Drew S 12.11.2013 - 12:55
fonte

1 risposta

0

La sicurezza di questa soluzione dipende dalla sicurezza di due elementi:

  • La connessione: se stai usando SSL allora i problemi legati alla sicurezza della connessione sono ben compresi (se non sempre facili da valutare): qualità del root store lato client, corretto scambio di chiavi, uso di protocolli sicuri, ecc.

  • Il token stesso. Innanzitutto, deve essere generato in un modo che renda difficile indovinare e impossibile riutilizzare. Inoltre deve essere protetto mentre si trova sul sistema client (questo è più un problema in un'applicazione web che su un client dedicato ma deve essere menzionato).

Supponendo che entrambi gli aspetti del problema siano gestiti correttamente, allora sì, una tale implementazione è abbastanza sicura.

    
risposta data 12.11.2013 - 14:54
fonte

Leggi altre domande sui tag