843 messaggi dal 08 aprile 2009
Ciao Moreno,
sono riuscita a creare il prototipo con JWT Token seguendo anche il tuo esempio.
Quello che, immagino, devo fare ora implementare Identity per la creazione degli utenti indipendentemente dal tipo di autenticazione scelgo.
Sono ancora molto indecisa.
Una cosa però di quello che mi hai scritto non mi è chiara e cioè quando dici che dovrò fare in modo di rinnovare il token in automatico quando sta per scadere.
11.886 messaggi dal 09 febbraio 2002
Contributi

Quello che, immagino, devo fare ora implementare Identity per la creazione degli utenti indipendentemente dal tipo di autenticazione scelgo.

Esatto, ASP.NET Core Identity è un sistema di membership e perciò ha l'unica responsabilità di persistere gli utenti in un database locale.

Autenticazione e autorizzazione, invece, sono altre responsabilità che ASP.NET Core risolve rispettivamente con un middleware e con i filtri [Authorize] di MVC/WebAPI.


Una cosa però di quello che mi hai scritto non mi è chiara e cioè quando dici che dovrò fare in modo di rinnovare il token in automatico quando sta per scadere.

Sì, perché un Token JWT ha una scadenza, esattamente come un cookie. Questa scadenza può essere personalizzata come preferisci. Se la imposti a 10 anni, viene meno l'utilità del token JWT: a quel punto tanto vale inviare username e password a ogni richiesta.
Invece, se imposti una scadenza breve, riesci a salvaguardare meglio l'account dell'utente perché sul device viene memorizzato un token che presto scadrà. Se il device viene rubato da un malintenzionato, potrà accedere ai dati solo per un periodo limitato di tempo, ammesso che il token non sia già scaduto.

Impostando una scadenza breve si crea però un altro problema: l'utente sarà costretto a reinserire di frequente il suo username e password per ottenere un nuovo token. Allora, per mitigare questo problema, puoi fare in modo che la tua applicazione emetta automaticamente un nuovo token quando il precedente sta per scadere. La mobile app raccoglierà il nuovo token e lo userà per le successive richieste. Così, l'utente può continuare ad usare l'app per ore, perché riceve sempre nuovi token con scadenza rinnovata.

Nell'esempio ui-and-api-auth puoi vedere che ho predisposto un middleware che emette un nuovo token ad ogni richiesta. Forse è un po' esagerato ma quello era solo un esempio. Tu potresti crearti un token con scadenza a 20 minuti e poi rinnovarlo quando la durata residua è scesa a 10 minuti o meno. Questo è in pratica quello che anche ASP.NET Core fa con i cookie di autenticazione.

ciao,
Moreno

Enjoy learning and just keep making

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.