Sto imparando sull'autenticazione basata su token con Token Web JSON ed ecco come la vedo ora per un'app mobile, creata con, ad es. Swift:Autenticazione basata su token da un'app mobile
posso creare un oggetto all'interno della applicazione utilizzando l'input dell'utente, come
{ nome utente: "PatrickBateman", password: "ismyknifesharp", ruolo: "regolare", . .. }
Quindi posso generare un token JWT da esso con un library.
- Quindi lo invio a un endpoint API supportato, ad esempio
/api/contacts/list
. O devo inviare login/password così come sono per autenticarsi? Il server
- controlla in qualche modo la correttezza del token. Ma come? Questo token generato dal server dovrebbe essere salvato nel database e utilizzato come chiave? O devo generare il token sul server ogni volta che ottengo una richiesta dal client e la confronta con il token client?
- Ottieni e gestisci tutti i dati di cui ho bisogno.
Ecco le mie conclusioni:
- Non ho bisogno di inviare login coppia/password al server per autenticare l'utente.
- Ho bisogno di inviare token ogni volta che ho bisogno di ottenere dati di sola autenticazione.
- Dovrei implementare un algoritmo che modifichi il token generato a causa di alcuni fattori, come il passare del tempo, in modo da rendere i token più convenienti.
- Dovrei inviare il token all'interno delle intestazioni, ma non necessariamente, come si può fare all'interno del corpo delle richieste JSON.
Queste conclusioni sono corrette? Qual è il modo di controllare il token inviato dal cliente?
Perché non è una buona idea mantenere la password e il nome utente sul lato client? In iOS possiamo memorizzarli in Keychain in modo sicuro giusto? – user805981
Anche quando possiamo memorizzarli in modo sicuro, ma non ci sono benefici per questo. Non dovremmo usare la password memorizzata per riconnetterci. Il modo migliore è lavorare con il token o richiedere all'utente di fornire nuovamente la password tramite il modulo di accesso. – t4nhpt
Vedo. E se dovessimo usare jwt e aggiornare i token. Dovremmo determinare se il jwt è scaduto dal lato client prima di inviare richieste http? O dovremmo lasciare scadere il jwt e restituire un 400 al client prima di entrare in un ciclo di aggiornamento? – user805981