2012-02-29 13 views
6

Sto cercando di aggiungere un'interfaccia REST a Django per un client mobile. Il client mobile utilizzerà JSON su HTTPS. Non sono stato in grado di trovare il modo "migliore" per realizzare questo per i dispositivi mobili. Dalla ricerca in giro, sembra che # 2 sia più favorevole a # 1:Come proteggere un'API REST per le applicazioni mobili?

  1. Utilizzare l'autenticazione HTTP e stabilire una sessione basata su cookie. Tutte le transazioni avverranno tramite HTTP e i messaggi JSON conterranno solo comandi o dati.
  2. Passa il nome utente e la password (crittografati) all'interno di ogni messaggio JSON per tutte le transazioni e non fare affidamento su sessioni basate sui cookie.

risposta

1

Il numero 2 è preferibile e, anziché eseguire il rollover, è consigliabile utilizzare l'autenticazione OAuth se possibile. Le librerie client e server sono ora prontamente disponibili per l'uso sulla maggior parte delle piattaforme. Controlla http://oauth.net per i dettagli.

+0

Eventuali link per progettare documenti/schemi su questo argomento? – QED

+0

Inizierei sicuramente con la sezione "Inizia" del sito web Oath.net sopra menzionato. Ha collegamenti a molte delle informazioni OAuth disponibili oggi. –

+0

Oops, intendevo REST – QED

3

OAuth è eccessivo se non si desidera rendere questi servizi disponibili ad altri sviluppatori (ai quali accederanno per conto degli utenti finali). Meglio andare con l'opzione 2, ma raccomanderei l'uso dell'autenticazione del digest invece dell'autenticazione della password. Combinalo con SSL e sei decisamente a posto.

0

Fintanto che si utilizza la crittografia effettiva e non base64 o qualche algoritmo di offuscamento locale, # 2 è soddisfacente e dandy. Potresti anche prendere in considerazione il percorso seguito da molte aziende, che vincola una chiave API a un nome utente.

+0

La crittografia è ancora necessaria se tutto sarà inviato in SSL? – ewhitt

+0

SSL è crittografia. È solo la crittografia a un livello diverso dello stack di comunicazione: SSL crittografa l'intero canale di comunicazione anziché solo i contenuti selezionati di un particolare messaggio. Pertanto è generalmente più costoso. Fare entrambe le cose può essere uno spreco di risorse. – QED

8

Si consiglia di inviare prima il nome utente/password con una chiamata di accesso. Il JSON restituirà un authToken o accessToken che il dispositivo mobile invierà per tutte le chiamate successive. Verificherete quindi che authToken sia valido. Questo è l'approccio adottato da molte API. Nel loro database collegheranno la chiave API all'account utente con cui hanno effettuato l'accesso.

+0

Grazie. Mi piace questo approccio. Questo tipo di troncamento ha un nome o qualcosa che potrei aggiungere a Google per caso? – ewhitt

+0

@ewhitt è considerato l'autenticazione basata su token http://upcoming.yahoo.com/services/api/token_auth.php – Bot

Problemi correlati