Attualmente sto creando un'API con cui comunicare un'app. Gli endpoint di API verranno protetti, quindi mi piacerebbe utilizzare un flusso OAuth con JWT per la sicurezza. Il mio flusso andrà in questo modo:
- Ricevi e convalida le credenziali dell'utente
- Emettere un token di accesso (JWT) e aggiornare il token per le credenziali valide
- Verifica l'integrità del token di accesso quindi verifica la scadenza
- Se scaduto - invia un 401 e si aspetta di ricevere un token di aggiornamento che verrà quindi convalidato e verrà emesso un nuovo token di accesso
- Altrimenti utilizza la rivendicazione ID utente per raccogliere più contesto e continuare con la richiesta \
Le mie domande:
-
Integrità JWT: un JWT compatto è composto da tre parti: intestazione, payload e firma. La firma viene verificata applicando il
alg
specificato nella sezione dell'intestazione all'intestazione codificata base64url e alle sezioni del carico utile separate da un '.' e quindi base64url codifica il valore prodotto. Questo significa che è possibile creare un token di accesso fasullo? Un token di accesso rubato potrebbe essere non codificato, l'ID utente rubato e inserito in un token di accesso molto simile, ma falso. Questo falso token viene quindi firmato come un normale JWT. Quando il server riceve questo token di accesso, questo token non mantiene la sua integrità? -
Flusso OAuth: Questo sembra essere un flusso corretto? I token di aggiornamento di un utente verranno archiviati in un database in modo che possano essere verificati in futuro (questi avranno una lunga durata ). Il token di accesso si baserà sulla sua integrità e sulle informazioni contenute al suo interno dal momento che la sua durata è così breve.