Dovrei controllare se il token è valido ogni volta che un utente naviga sulla mia app?

3

Ho una singola pagina di applicazione (SPA) che comunica con un'API. Ho creato un sistema di autenticazione molto semplice: l'utente accede e ottiene un token Web JSON (JWT) archiviato nella memoria locale dell'utente.

Ho anche un endpoint sull'API che mi consente di verificare se il token è ancora valido o meno.

Dovrei chiamare questo endpoint ogni volta che un utente naviga verso una pagina diversa sulla SPA o dovrei chiamarla solo quando l'utente vuole accedere alle aree del sito che utilizzeranno il token per le richieste?

    
posta Ivan Aguilar 25.11.2017 - 19:09
fonte

2 risposte

1

Questo dipende.

Se hai bisogno del token per l'autenticazione e gli utenti non autenticati non possono accedere a nulla, dovresti verificarne la validità per ogni richiesta.

Se controlli il token solo quando hai bisogno di una parte delle informazioni da esso - e stai bene con l'accesso anonimo a tutti gli altri siti, non è necessario controllarlo ad ogni richiesta.

Tieni presente che è facile dimenticare di controllare il token quando non hai bisogno di informazioni, ma vuoi limitare l'accesso per gli utenti che hanno effettuato l'accesso, quindi controllare il token tutto il tempo sembra una buona idea, soprattutto dal momento che sembri implicare che ogni richiesta dovrebbe avere un token.

    
risposta data 25.11.2017 - 19:51
fonte
0

I second @ Risposta di SmokeDispenser.

Non ci hai detto quale contenuto stai inserendo nella JWN, ma in generale un JWT fornisce due elementi:

  1. Prova che si tratta di un utente autenticato e registrato.

  2. Contiene le informazioni utilizzate per imporre le regole ACL (Access Control List), ossia la possibilità di chiedere "È consentito a questo utente visualizzare / modificare questa risorsa?".

Quindi vorrei capovolgere la domanda e chiedere ogni API o tipo di richiesta:

Does the server need to know the identity of the user in order to handle this request?

Per una chiamata API completamente pubblica (nessuna autenticazione richiesta), quindi No , non hai motivo di controllare il JWT.

Per tutti gli altri casi, dovresti restituire 403 Proibito se qualcuno che non ha effettuato l'accesso prova ad accedervi. Quindi , devi controllare la JWT con ogni richiesta; come minimo che il JWT non sia scaduto, e possibilmente anche che questo utente abbia il permesso di accedere a questa risorsa.

    
risposta data 25.11.2017 - 20:35
fonte

Leggi altre domande sui tag