Verificar OTP
Endpoint para verificar códigos OTP gerados por aplicativos autenticadores, usado tanto para login quanto para validação de operações sensíveis.
Autenticação
Bearer token JWT do usuário autenticado
Parâmetros
Request Body
Código OTP de 6 dígitos gerado pelo app autenticador
Responses
{
"valid": true,
"message": "Código OTP verificado com sucesso",
"timestamp": "2024-01-15T10:30:00.000Z"
}
Exemplo de Requisição
curl --location --request POST 'http://localhost:3333/auth/otp/verify' \
--header 'Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...' \
--header 'Content-Type: application/json' \
--data-raw '{
"token": "123456"
}'
Casos de Uso
const loginWith2FA = async (email, password) => {
// 1. Login normal
const loginResponse = await fetch('/auth/signin', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email, password })
});
if (loginResponse.status === 200) {
const { access_token, requires2FA } = await loginResponse.json();
if (requires2FA) {
// 2. Solicitar OTP
const otpCode = await showOTPModal();
// 3. Verificar OTP
const otpResponse = await fetch('/auth/otp/verify', {
method: 'POST',
headers: {
'Authorization': `Bearer ${access_token}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ token: otpCode })
});
if (otpResponse.ok) {
// Login completo
localStorage.setItem('access_token', access_token);
window.location.href = '/dashboard';
}
} else {
// Login sem 2FA
localStorage.setItem('access_token', access_token);
window.location.href = '/dashboard';
}
}
};
Troubleshooting
Problemas Comuns
| Problema | Causa | Solução |
|---|
| Código sempre inválido | Relógio dessinronizado | Sincronizar tempo do dispositivo |
| ”OTP não configurado” | 2FA não ativado | Ativar 2FA primeiro |
| Código não aceito | Inserido muito tarde | Usar próximo código |
Códigos OTP são válidos por apenas 30 segundos. Certifique-se de usar o código atual do aplicativo.
Implemente interface que mostre o tempo restante para o código atual expirar.
Próximos Passos
- Configure rate limiting adequado
- Implemente códigos de backup como alternativa
- Configure logs de auditoria detalhados
- Teste sincronização de tempo