É aceitável usar GenerateChangePhoneNumberTokenAsync() para confirmar um e-mail em vez do número de telefone?

0

Pergunta

Eu estou construindo uma API e um APLICATIVO Móvel em Xamarin. Eu não quero confirmar o número de telefone como eu teria que usar Twilio ou outros provedores de SMS, em vez disso, quero confirmar um e-mail. Ao mesmo tempo, eu não quero criar um e-mail de token para ser enviada para o usuário com um link para clicar, como API não é MVC e não tem qualquer ponto de vista.

Em vez disso, eu precisava de uma senha de 6 dígitos o código para ser enviado por email para o utilizador e, em seguida, vou criar um ponto final na API onde o usuário irá enviar o código através do APLICATIVO móvel, confirmar o e-mail. Por exemplo:

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

Isto cria o código, observe que eu estou passando usuários de e-mail, ao invés de incluir o número de telefone. Este código é agora enviado para o usuário, e o usuário insere as informações no APLICATIVO móvel. Então:

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

Isso confirma que o código está correto. O booleana resultante da presente e, em seguida, usar para definir manualmente EmailConfirmed DB-a true

Ele funciona. É aceitável que? Existe alguma razão pela qual eu não deveria estar fazendo isso?

1

Melhor resposta

2

Uma razão que surge é que, apesar de apenas um código de validação, semanticamente a função de telefone, códigos, de modo que ele poderia ter algumas "armadilhas", introduzida no futuro, se você usá-lo para e-mails.

Lendo a fonte , você pode ver que a implementação é atualmente baseado na RFC 6238: com Base no Tempo de Uma Hora Algoritmo de palavra-Passe, que é genérico o suficiente para o e-mail de uso de bem.

Assim, você sabe que usando o mesmo método, é tão seguro quanto o RFC 6238 especificação conforme implementado no ASP.NET Identidade do Núcleo.

Você não pode apenas usar a classe, porque o modificador de acesso é internalmas seguindo a mesma idéia, há OTP Bibliotecas para .NET com base no mesmo princípio.

Usando um deles seria garantir que a implementação é tão limpo e genérica possível, na minha opinião, mas para a solução rápida e suja com a versão atual do ASP.NET Identidade Core, eu veria nenhum problema com a abordagem.

2021-12-04 16:42:57

Em outros idiomas

Esta página está em outros idiomas

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