Ho un backend nodejs basato su koajs per la mia app personale / hobby. Ho implementato la gestione delle sessioni con i token jwt. Ora il client ottiene il suo token dopo una corretta autenticazione di login, quindi il mio client angularjs memorizza il token da qualche parte (attualmente in sessionStorage ma per questa domanda non ci interessa la memorizzazione). Ho due domande
-
Quando devo aggiornare il record dell'utente che il jwt rappresenta, ad esempio, l'utente ha attivato 2FA, quindi gli ho chiesto di fornire il suo numero di telefono e vorrei impostare questo numero di telefono nel record dell'utente. Attualmente, dopo una verifica riuscita sul numero di telefono, chiamo il mio backend per aggiornare il record dell'utente e creo un nuovo token JWT con il record utente aggiornato (escludo informazioni sensibili dal token jwt come il hash pwd e altri .., ma Mi piacerebbe includere il numero di telefono per l'utilizzo lato client). Quindi, fondamentalmente la domanda è, è giusto creare un nuovo token quando alcune delle credenziali cambiano e aggiornano il token lato client esistente con questo nuovo token? Non dovrei mai creare un altro token, solo per crearne uno solo dopo aver autenticato con successo? Come aggiornare quindi il payload nel token?
-
Come devo gestire i token jwt scaduti? Nella mia mente ho 3 (possibili) scenari:
-
Il jwt è impostato su vita breve, diciamo 15 minuti. Se il server di backend risponde con un token ivalidale 401 non autenticato (presumo che questo sia il comportamento predefinito di koa-jwt), allora disconnetto automaticamente il mio client e richiedo la ri-autenticazione. Ma ho anche creato un middleware complementare che è l'ultimo della catena sul back-end per ricreare il token con una scadenza aggiornata e il client sostituirà anche il token esistente con quello aggiornato. Quindi, se l'utente è attivo e utilizza l'applicazione ogni chiamata API protetta, in caso di successo, creerebbe un nuovo token per sostituire il vecchio token.
-
Il jwt è impostato per durare a lungo, diciamo 1 settimana, e se scade, accetto nuovamente la re-autenticazione dal client.
-
Copia link . Qui, quando si crea il token jwt dopo un'autenticazione corretta, inviamo un access_token e un refresh_token. Quando il token di accesso è scaduto e il server risponde con 'token non valido' HTTP 401 (default koa-jwt), il client invia il refresh_token al backed per richiedere un nuovo access_token (opzionalmente un nuovo refresh_token). In questo caso, non capisco appieno come viene verificato il refresh_token rispetto al vecchio access_token per fornire un nuovo token? O perché abbiamo bisogno di avere un refresh_token?
-
Fondamentalmente ho solo bisogno di consigli generici sugli argomenti superiori (aggiornamenti jwt e scadenza jwt). Grazie