If anyone trace the requests and responses, Can he get the token from headers?
Se un attaccante è in una posizione adatta per eseguire un attacco MitM (Man in the Middle) ed è in grado di intercettare e visualizzare le richieste, allora sì, possono ottenere il token dalle intestazioni. Per evitare ciò, assicurati che il servizio REST in uso sia utilizzando SSL / TLS . Ciò impedirà MitM e riprodurrà gli attacchi. Il servizio REST deve inoltre assicurarsi che questi token siano correttamente invalidati sul lato server una volta che l'utente si disconnette e ci dovrebbe essere un timeout della sessione rigido associato a questi token.
Where should I store token in android client?
È possibile memorizzarli nelle SharedPreferences dell'applicazione. Leggi questa risposta per ulteriori dettagli su di esso.
If I store token in somewhere like SharedPreferences and user access that He can send fake request to server!
Sì, un utente può farlo con il proprio token di sessione . Questo è esattamente ciò per cui viene utilizzato il token. Per quanto riguarda l'accesso a un controller limitato, è responsabilità del servizio assicurarsi che il controllo di accesso sia corretto sul lato server e che all'utente sia consentito solo eseguire richieste controllate verso un particolare endpoint.
Il problema è che se un utente malintenzionato ottiene il tuo token di sessione valido , sarà in grado di impersonarti sull'applicazione. Ma hai appena reso difficile il loro compito utilizzando SSL / TLS ovunque e assicurando che l'applicazione non perda il token di sessione in alcun modo (ad esempio, negli URL della richiesta).