Skip to main content

Overview

O OTP é um mecanismo genérico de verificação que gera um código numérico de 6 dígitos, mantém apenas sua versão protegida e entrega o código ao usuário. Cada OTP está vinculado a um contexto que determina qual operação será autorizada após a verificação, como recuperação de senha, troca de telefone ou troca de email.

How It Works

A verificação ocorre dentro do fluxo que consome o OTP (ex.: reset-password), usando o otpId devolvido na solicitação junto com o code.

Registro

CampoTipoDescrição
otpIdUUIDIdentificador único (devolvido ao cliente na solicitação)
userIdUUIDReferência ao User
codeStringCredencial protegida do código (nunca armazenado em texto puro)
contextOtpContextContexto que determina a finalidade do OTP
recipientStringDestinatário da entrega
expiresAtDateTimeData/hora de expiração (2 minutos após a criação)
usedAtDateTime?Data/hora de uso (null se não utilizado)
createdByUUID?Usuário que criou o registro, quando aplicável
createdAtDateTimeData/hora de criação
updatedByUUID?Usuário que fez a última atualização, quando aplicável
updatedAtDateTimeData/hora de última atualização

Supported Contexts

ContextDescriçãoAção pós-verificação
RESET_PASSWORDRecuperação de senhaDefine a nova senha do usuário e marca o OTP como usado
RESET_PHONETroca ou validação de telefoneAutoriza a atualização do telefone e marca o OTP como usado
RESET_EMAILTroca ou validação de emailAutoriza a atualização do email e marca o OTP como usado
Novos contextos podem ser adicionados conforme necessário (ex.: two-factor auth). O mecanismo de geração, entrega e verificação permanece o mesmo — apenas a ação pós-verificação muda.

Business Rules

RegraDescrição
ValidadeO código expira 2 minutos após a criação.
Credencial protegida em repousoApenas a versão protegida do código é mantida; o valor em texto puro só existe na entrega.
Uso únicoApós verificação bem-sucedida, usedAt é preenchido e o código não pode ser reutilizado.
Proteção contra enumeraçãoSe o usuário não existir (ou não tiver telefone), a solicitação devolve um otpId aleatório sem criar nenhum OTP, evitando revelar quais contas existem.
O código OTP não é um token de autenticação. É um código de verificação de curta duração que, após validado, dispara a ação correspondente ao seu contexto.