Ho letto molto che non puoi limitare la tua API Public REST solo alla tua applicazione mobile, ma ho un'idea e voglio avere opinioni su di essa:
Metodo chiave app variabile
App per dispositivi mobili
- Ottieni l'indirizzo IP della connessione corrente
- Utilizza un algoritmo segreto per generare un AppKey con hash dall'indirizzo IP.
- Invia l'AppKey con ogni richiesta API
Lato server
- Verifica l'indirizzo IP della richiesta in arrivo
- Genera AuthKey da quell'indirizzo IP usando lo stesso algoritmo segreto.
- Confronta AuthKey con AppKey, se corrispondono corrispondono a quelli che conosci L'applicazione sta parlando con te, perché solo l'applicazione lo sa l'algoritmo segreto.
Quando cambia l'indirizzo IP:
- Sull'app mobile, rigenerare AppKey utilizzando il nuovo indirizzo IP
- Il lato server genererà sempre la stessa chiave perché dipende sull'indirizzo IP della richiesta
Il vantaggio principale di questo è che l'AppKey cambia sempre, che è meglio di una chiave di applicazione hardcoding 1 all'interno del codice, che può essere facilmente rubata leggendo le intestazioni delle richieste. E anche se hai rubato AppKey da un utente, devi utilizzare lo stesso indirizzo IP in cui è stata generata la chiave.
Qualche idea?
Conclusione:
Affidarsi all'indirizzo IP è problematico perché dovrai chiamare un'API esterna per restituire il tuo indirizzo IP corretto, e dovrai farlo prima di ogni richiesta perché gli indirizzi IP cambiano continuamente.
Il secondo problema è che la connessione Internet sui dispositivi mobili passa molto da Wi-Fi a 3G a 4G, il che porterà a un comportamento delle applicazioni instabile.