Come gestisci la scadenza JWT per le chiamate di lunga durata?

6

Attualmente discutiamo sulla sicurezza dei nostri multipli micro-servizi. La principale preoccupazione è che il token JWT fornito a noi scadrà prima che la chiamata sia finita. (Questo è nel design sincrono) Ecco tre proposte:

  1. L'app client ha un metodo 'assicura (int minuti)' prima di lunghe chiamate, chiamando il fornitore di token se necessario. Lascia che JWT scada se colpisce il filtro di sicurezza.
  2. L'app client invia sia JWT che il token di aggiornamento. Se scade il JWT, utilizza il token di aggiornamento per ottenere quello nuovo e posizionarlo sugli header di risposta tramite il provider di token.
  3. Crea un servizio di "accesso". Le cache di accesso aggiornano le informazioni e restituiscono JWT. Invia il vecchio JWT per ottenere un JWT aggiornato tramite il provider di token.

Pensieri? Nota: il mio voto è per # 1. Il resto sembra insicuro, ma conveniente.

    
posta Joe Kennedy 19.02.2018 - 04:32
fonte

2 risposte

3

Non capisco perché pensi che la scadenza del token JWT sarà un problema. Dovresti convalidare la scadenza solo quando il messaggio raggiunge il tuo sistema (richiesta inoltrata). Se hai una coda davanti al tuo servizio, dovresti controllare / convalidare i token prima che il messaggio che li contiene entri nella coda. Se hai un'operazione di servizio che richiede molto tempo, controlla la scadenza all'inizio dell'elaborazione, non alla fine.

Un'abilità importante creata da schemi di microservizi è che puoi rispondere a un flusso di eventi. Ciò significa naturalmente che alcuni dei dati nella riproduzione saranno scaduti.

La scadenza è intesa come un meccanismo che impedisce agli utenti esterni al tuo sistema di utilizzare attacchi "replay" contro il tuo sistema. Una volta che i dati l'hanno inserito al proprio interno del sistema, non dovresti più controllare la scadenza.

    
risposta data 13.07.2018 - 18:09
fonte
0

Client App sends both JWT and Refresh Token. If JWT expires, use refresh token to get new one and place on response headers via token provider.

È per lo più corretto tranne che vanno sulle intestazioni delle richieste, non sulla risposta.

Quindi, il web api riceve una richiesta con un JWT valido che scade tra un minuto e la richiesta viene eseguita per 5 minuti, il server emette una risposta e la richiesta successiva ottiene 401'ed perché il jwt è scaduto e quindi una chiamata per aggiornare il token dovrebbe essere fatto (la scadenza del token di aggiornamento dovrebbe essere > 5 minuti in questo caso).

    
risposta data 13.07.2018 - 18:26
fonte