POST
https://api.myidvirtual.com
/
auth
/
otp
/
validate
Validar OTP
curl --request POST \
  --url https://api.myidvirtual.com/auth/otp/validate \
  --header 'Authorization: <authorization>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "token": "<string>",
  "otpId": "<string>"
}
'
{
  "valid": true,
  "message": "OTP validado com sucesso",
  "userId": "123e4567-e89b-12d3-a456-426614174000"
}

Validar OTP

Endpoint para validar um código OTP (One-Time Password) do usuário. Este endpoint é utilizado para confirmar que o código gerado pelo aplicativo autenticador está correto.

Autenticação

Authorization
string
required
Bearer token JWT do usuário autenticado

Parâmetros

Request Body

token
string
required
Código OTP de 6 dígitos gerado pelo aplicativo autenticador
otpId
string
ID do OTP a ser validado (opcional)

Responses

{
  "valid": true,
  "message": "OTP validado com sucesso",
  "userId": "123e4567-e89b-12d3-a456-426614174000"
}

Exemplo de Requisição

curl --location --request POST 'http://localhost:3333/auth/otp/validate' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
--header 'Content-Type: application/json' \
--data-raw '{
  "token": "123456"
}'

Diferença entre Verify e Validate

Verify (Verificação Inicial)

  • Usado durante a configuração inicial do 2FA
  • Confirma que o usuário configurou corretamente o app autenticador
  • Ativa o OTP para o usuário

Validate (Validação Contínua)

  • Usado após o 2FA já estar configurado
  • Valida códigos em logins e ações sensíveis
  • Não modifica a configuração do OTP

Validação de Formato

const validateOTPFormat = (code) => {
  // Apenas 6 dígitos
  if (!/^\d{6}$/.test(code)) {
    throw new Error('Código deve conter exatamente 6 dígitos');
  }

  return true;
};
Códigos OTP são válidos por apenas 30 segundos. Certifique-se de que o relógio do dispositivo está sincronizado.
Implemente um timer visual para mostrar quando o código atual irá expirar, melhorando a experiência do usuário.

Troubleshooting

Códigos Sempre Inválidos

Problema: Todos os códigos digitados são rejeitados Soluções:
  1. Verificar sincronização de tempo do dispositivo
  2. Confirmar que o OTP foi configurado corretamente
  3. Tentar gerar novo OTP se o problema persistir

Lockout por Tentativas

Problema: Usuário bloqueado por muitas tentativas Solução: Aguardar 5 minutos ou contatar administrador para reset manual

Próximos Passos

  1. Implemente backup codes para recuperação de acesso
  2. Configure notificações de tentativas de validação
  3. Adicione logs de segurança para auditoria
  4. Teste diferentes apps autenticadores
Este endpoint não ativa o OTP, apenas valida códigos. Use /auth/otp/verify durante a configuração inicial.