Autenticazione a più fattori in ASP.NET Core
Nell'unità precedente si è personalizzato ed esteso ASP.NET Core Identity. In questa unità, verrà illustrata l'autenticazione a più fattori e ne verrà descritta l'implementazione in Identità.
Autenticazione a più fattori
L'autenticazione a più fattori è un processo in cui a un utente vengono richieste ulteriori forme di identificazione durante l'accesso. La richiesta può riguardare un codice generato da un'app, un valore del token hardware o un'analisi biometrica. La richiesta di un secondo tipo di autenticazione si traduce in un miglioramento della sicurezza.
La prova necessaria per l'autenticazione viene classificata in tre tipi:
- Informazione nota, come una password o una domanda di sicurezza.
- Oggetto in proprio possesso, ad esempio un token hardware o un'app installata nel telefono.
- Caratteristica personale, ad esempio un'impronta digitale o la scansione del viso.
Gran parte dell'efficacia dell'autenticazione a più fattori deriva dall'uso di diversi tipi di autenticazione. Un avversario potrebbe essere in grado di ottenere l'accesso a più cose che sai, come la tua password e il tuo soprannome infantile. Tuttavia, è più difficile compromettere sia qualcosa che sai e qualcosa che hai o sono.
Password monouso a tempo
TOTP (Time-Based One-Time Passwords) è un algoritmo noto che genera codici numerici univoci che scadono dopo 30 secondi. L'algoritmo accetta due input, l'ora corrente e una chiave univoca.
L'utente immette la chiave in un'app conforme a TOTP durante la registrazione. Queste app includono:
- Microsoft Authenticator.
- Google Authenticator.
- Molte altre
Per semplificare l'immissione della chiave nell'app, è possibile usare un codice a matrice. L'app usa la chiave e l'ora corrente per generare e visualizzare codici univoci ogni 30 secondi. Se il codice generato dall'app corrisponde a quello previsto dal server, l'autenticazione ha esito positivo. L'algoritmo è progettato in modo da non considerare differenze minime tra gli orologi nel dispositivo e nel server.
Come forma di autenticazione a più fattori, all'utente viene in genere richiesto un codice TOTP unitamente a una password. La password è un'informazione nota, mentre il codice è la prova di un oggetto in proprio possesso. Questo è l'unico modo per generare il codice con la chiave archiviata nell'app.
Per impostazione predefinita, i modelli di progetto ASP.NET Core che usano Identità includono il supporto per l'autenticazione a più fattori per le app di autenticazione TOTP. Il modulo Configure authenticator app (Configura app di autenticazione) del modello Razor Pages visualizza una chiave di registrazione di 32 caratteri per inizializzare il valore del token. Il modello non genera tuttavia un codice a matrice per impostazione predefinita.
Nota
I codici inviati da messaggi di testo SMS costituiscono un'alternativa comune a TOTP. Dopo tutto, il telefono che riceve il messaggio SMS rappresenta un oggetto di cui si è in possesso. Tuttavia, l'uso di SMS come metodo di autenticazione a più fattori è un avversario relativamente facile da sconfiggere. Di conseguenza, i codici SMS non sono più considerati una forma sicura di autenticazione a più fattori.
Riepilogo
In questa unità, si è appreso che cos'è l'autenticazione a più fattori e come viene implementata in Identità di ASP.NET Core per impostazione predefinita. Nell'unità successiva si personalizzerà il modulo Configurare l'app Authenticator per fornire un codice a matrice contenente la chiave di registrazione.