È accettabile l'uso di GenerateChangePhoneNumberTokenAsync() per confermare una e-mail invece di un numero di telefono?

0

Domanda

Sto costruendo un API e un APP Mobile in Xamarin. Non voglio confermare il numero di telefono come devo utilizzare Twilio o altri SMS provider, invece, voglio confermare una e-mail. Allo stesso tempo, non voglio creare una e-mail token per essere inviato all'utente con un link da cliccare, come API non è MVC e non hanno alcuna vista.

Invece, voglio un 6 cifre del codice per essere inviato via email all'utente e quindi vorrei creare un endpoint API da cui l'utente invia il codice tramite l'APP mobile, per confermare l'email. Per esempio:

var code = await _userManager.GenerateChangePhoneNumberTokenAsync(newUser, newUser.Email);

Questo crea il codice, notate che sto passando e-mail degli utenti, piuttosto che il numero di telefono. Questo codice è ora inviato per l'utente, e l'utente entra nell'APP mobile. Quindi:

var confirmed = await _userManager.VerifyChangePhoneNumberTokenAsync(newUser, code, newUser.Email);

Questo conferma che il codice è corretto. Boolean derivanti da questo io poi uso per impostare manualmente EmailConfirmed nel DB true

Funziona. È accettabile anche se? C'è qualche ragione per cui non dovrei farlo?

1

Migliore risposta

2

Una ragione che si apre è che anche se è solo un codice di convalida, semanticamente, la funzione è per codici del telefono, in modo che si potrebbe avere alcuni "trucchi" introdotte in futuro, se lo si utilizza per e-mail.

Leggendo il sorgente si può vedere che l'attuazione è attualmente basato su RFC 6238: in Base al Tempo One-Time Password Algoritmo, che è sufficientemente generico per l'utilizzo di posta elettronica, come pure.

Così, si sa che utilizzando lo stesso metodo, è sicuro come la RFC 6238 specificazione di quanto attuato in ASP.NET Identità Core.

Si può semplicemente utilizzare la classe, perché il modificatore di accesso è internalma seguendo la stessa idea, ci sono OTP Librerie per .NET basato sullo stesso principio.

Utilizzando uno di loro sarebbe garantire che l'applicazione è pulita e generico possibile, a mio parere, ma per il rapido e sporco soluzione con la versione corrente di ASP.NET Identità Core, mi piacerebbe vedere senza problemi con l'approccio.

2021-12-04 16:42:57

In altre lingue

Questa pagina è in altre lingue

Русский
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................