Estamos utilizando un algoritmo de contraseña de un solo uso basado en el tiempo (Google Authenticator) en nuestro sistema. Dado que actualmente no permitimos ninguna ventana de tiempo y la validez del código es de solo 30 segundos, estamos constantemente teniendo problemas con la desincronización de tiempo en los dispositivos, que generan códigos TOTP. Eso significa que los usuarios no pueden iniciar sesión porque ingresan códigos vencidos o con anticipación.
Parece que es una práctica general permitir "ventanas", por lo que el sistema permitiría códigos que son válidos a la vez, lo que está cerca de la hora actual precisa. La pregunta es: ¿cuánto tiempo deberían tener esas ventanas? ¿Hay alguna práctica en toda la industria? Estoy considerando un valor generalmente aceptado, que es práctico, dado lo preciso que suele ser el tiempo en la mayoría de los teléfonos con Google Authenticator y también es lo suficientemente seguro. ¿Es 1 o 5 minutos o algo más?