Je to přijatelné pro použití GenerateChangePhoneNumberTokenAsync() volbu potvrďte e-mail, místo telefonní číslo?

0

Otázka

Stavím API a Mobilní APLIKACE v Xamarin. Nechci potvrdit telefonní číslo, tak jsem musel použít, Twilio nebo dalších SMS služeb, místo toho, chci potvrdit e-mail. Ve stejné době, nechci, aby vytvořit e-mail token bude zaslán uživateli odkaz na klepněte na tlačítko, jako API není MVC a nebude mít žádné názory.

Místo toho, chci, 6 místný kód, aby se e-mailem na uživateli, a pak jsem se vytvořit koncový bod v API, kde si uživatel bude předkládat, že kód přes mobilní APLIKACE, potvrdit e-mail. Například:

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

To vytváří kód, upozornění jsem kolem uživatelům e-mail, spíše než telefonní číslo. Tento kód je nyní e-mailem na uživatele, a uživatel zadá to v mobilní APLIKACI. Pak:

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

To potvrzuje, že kód je správný. Boolean vyplývající z tohoto pak budu moci ručně nastavit EmailConfirmed v DB true

To funguje. Je to přijatelné? Je nějaký důvod, proč bych to neměla dělat?

1

Nejlepší odpověď

2

Jeden důvod, který se objeví, je, že i když je to jen ověřovací kód, sémanticky funkce je pro telefonní kódy, tak by to mohlo mít nějaké "gotchas" zavedeny v budoucnu, pokud budete používat pro e-maily.

Při čtení zdrojového můžete vidět, že implementace je v současné době založena na RFC 6238: Time-Based One-Time Password Algorithm, což je obecná dost pro používání e-mailu, stejně.

Tak, víte, že pomocí stejné metody, je to stejně bezpečné jako RFC 6238 specifikace jako realizován v ASP.NET Identita Jádro.

Nemůžete jen tak použít třídu, protože přístupový modifikátor je internal, ale po stejný nápad, tam jsou OTP Knihovny .NET založené na stejném principu.

Pomocí jednoho z nich by bylo zajištěno, že implementace je tak čisté a generic, jak je to možné v můj názor, ale pro rychlé a špinavé řešení s aktuální verzí ASP.NET Identita Jádro, viděl jsem žádné problémy s přístupem.

2021-12-04 16:42:57

V jiných jazycích

Tato stránka je v jiných jazycích

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