Google Authenticator es un autenticador sin conexión. Puede estar basado tanto en el tiempo como en eventos. Basado en el tiempo significa que usará un reloj para detectar el código correcto para mostrar.
Para evitar la desincronización porque los relojes son imprecisos, simplemente tiene un factor de corrección, por lo que configura el servidor para que acepte un código anterior, un código actual o un código posterior.
Si se usa un código anterior, almacena "-1" en la base de datos. Si se usa un código posterior, almacena "+1" en una base de datos. Y luego disminuyes o aumentas el número de acuerdo con la sincronización.
"-1" significaría que acepta el código correspondiente a tiempo -2, tiempo -1 y tiempo.
"+2" significaría que acepta el código correspondiente al tiempo +1, el tiempo +2 y el tiempo +3
Una cosa importante es almacenar la hora del último código aceptado, por lo que los códigos que son iguales o anteriores al código utilizado no se pueden reutilizar.
Dado que el autenticador está completamente basado en el tiempo, significará que la misma clave se puede utilizar para un número ilimitado de servidores. Tenga en cuenta que si los servidores están fuera de línea o no pueden comunicarse entre ellos, entonces un código gastado de una máquina se puede reutilizar en Otra máquina, siempre que no haya expirado a tiempo.
También puede usar una configuración basada en eventos, con un contador que cuenta para cada visualización del código, y luego simplemente acepta todos los códigos que están a la altura, digamos 50 eventos en el futuro, y luego almacene el conteo de el último código utilizado, por lo que los códigos no se pueden reutilizar, pero luego necesita una clave única para cada máquina.
El formato de KeyURI es inicializar el Google Authenticator, normalmente incrusta el KeyURI en un código QR que se muestra en la pantalla en la configuración de la cuenta, y luego lo escanea con Google Authenticator para agregar el valor inicial a Google Authenticator. Simplemente escriba un nombre descriptivo como "etiqueta", por ejemplo:
"Servidor en 192.168.10.3"
Y luego, cuando busque en el autenticador de Google, podrá ver:
542208 (pie of decreasing time)
Server at 192.168.10.3
389578 (pie of decreasing time)
Server at 192.168.10.4
y así sucesivamente.
Entonces sabrás qué código deberías escribir.