Vorrei creare una piccola app mobile (Android e iOS) e un piccolo server di backend con AEST REST.Fornire l'autenticazione di Facebook protetta con il mio server
Gli utenti della mia app (Android o iOS) devono effettuare l'accesso su Facebook. Lo faccio utilizzando Facebook sdk mobile. Quando il login è andato a buon fine, Facebook sdk restituirà un authentificationToken, che ora si trova sullo smartphone degli utenti.
L'idea è la seguente: Ogni volta che la mia app ha bisogno di alcuni dati, l'app collegherà al mio server backend (REST) su HTTPS. Ad esempio: l'app effettua un semplice HTTP GET e passa l'autenticazione di Facebook recuperata. Il mio server ottiene questa autenticazione di Facebook e usa questo token per determinare se l'utente è autenticato e recuperare le informazioni del profilo di Facebook (nome, cognome, ecc.). Quindi il server contatta anche Facebook e genera la risposta personalizzata per la richiesta HTTP GET.
Le mie domande sono:
- E 'davvero sufficiente a passare questo token facebookAuthentication per ogni chiamata API REST, per rendere il server recuperare l'utente facebook associato corretta?
- Io uso HTTPS, quindi suppongo, la connessione sia sufficientemente crittografata, giusto?
- Suppongo di aver bisogno di un meccanismo di firma quindi firmare ogni chiamata API REST (su HTTPS) per garantire che il token di FacebookAuthentication sia stato inviato solo dalla mia app mobile. Lo farei utilizzando RSA con SHA-1 per firmare qualsiasi chiamata API REST. Ma il problema con questo approccio è che il client deve memorizzare la chiave privata da qualche parte nell'app (per le richieste di firma) e il server conosce la chiave pubblica (per la corrispondenza delle firme). È corretto? Se sì, credo che sia un grosso problema di sicurezza, dal momento che un'app mobile (in particolare Android) potrebbe essere decompilata per ottenere la chiave privata. Come posso conservare questa chiave privata in modo sicuro nella mia app? C'è un altro sistema per la firma che puoi raccomandare?
Bt: conosci una buona libreria RSA per iOS e Android?