¿Existe una API pública para usar Google Authenticator ( autenticación de dos factores) en aplicaciones web de ejecución automática (por ejemplo, LAMP stack)?
¿Existe una API pública para usar Google Authenticator ( autenticación de dos factores) en aplicaciones web de ejecución automática (por ejemplo, LAMP stack)?
El proyecto es de código abierto. No lo he usado. Pero está utilizando un algoritmo documentado (indicado en el RFC que figura en la página del proyecto de código abierto), y las implementaciones del autenticador admiten varias cuentas.
El proceso real es sencillo. El código de un tiempo es, esencialmente, un generador de números pseudoaleatorios. Un generador de números aleatorios es una fórmula que, una vez dada una semilla, o número inicial, continúa creando una secuencia de números aleatorios. Dada una semilla, mientras que los números pueden ser aleatorios entre sí, la secuencia en sí es determinista. Entonces, una vez que tenga su dispositivo y el servidor "sincronizados", los números aleatorios que crea el dispositivo, cada vez que presione el "botón de siguiente número", serán los mismos números aleatorios que el servidor espera.
Un sistema seguro de contraseña única es más sofisticado que un generador de números aleatorios, pero el concepto es similar. También hay otros detalles para ayudar a mantener el dispositivo y el servidor sincronizados.
Por lo tanto, no es necesario que otra persona aloje la autenticación, como, por ejemplo, OAuth. En su lugar, debe implementar ese algoritmo que sea compatible con las aplicaciones que Google proporciona para los dispositivos móviles. Ese software está (debería estar) disponible en el proyecto de código abierto.
Dependiendo de su sofisticación, debe tener todo lo que necesita para implementar el lado del servidor de este proceso para proporcionar el proyecto OSS y el RFC. No sé si hay una implementación específica para el software de su servidor (PHP, Java, .NET, etc.)
Pero, específicamente, no necesita un servicio externo para manejar esto.
El algoritmo está documentado en RFC6238 . Va un poco así:
He tenido un juego implementando el algoritmo en javascript aquí: http://blog.tinisles.com/2011/10/google-authenticator-one-time-password-algorithm-in-javascript/
fuente
Hay una variedad de bibliotecas para PHP (The LAMP Stack)
PHP
https://code.google.com/p/ga4php/
http://www.idontplaydarts.com/2011/07/google-totp-two-factor-authentication-for-php/
Debe tener cuidado al implementar la autenticación de dos factores, debe asegurarse de que sus relojes en el servidor y el cliente estén sincronizados, que haya protección contra ataques de fuerza bruta en el token y que la semilla inicial utilizada sea adecuadamente grande.
fuente
Puede usar mi solución , publicada como respuesta a mi pregunta (hay un código completo de Python y una explicación ):
Creo que es bastante fácil implementarlo en PHP o Perl. Si tiene algún problema con esto, hágamelo saber.
También publiqué mi código en GitHub como módulo de Python.
fuente
Encontré esto: https://github.com/PHPGangsta/GoogleAuthenticator . Lo probé y funciona bien para mí.
fuente
Hay: https://www.gauthify.com que lo ofrece como servicio
fuente
Sí, no necesita ningún servicio de red, porque la aplicación Google Authenticator no se comunicará con el servidor de Google, simplemente se sincroniza con el secreto inicial que genera su servidor (ingrese a su teléfono desde el código QR) mientras pasa el tiempo.
fuente
No es LAMP, pero si usa C #, este es el código que uso:
Código originario de:
https://github.com/kspearrin/Otp.NET
La clase Base32Encoding es de esta respuesta:
https://stackoverflow.com/a/7135008/3850405
Programa de ejemplo:
Totp:
Base32Encoding:
fuente
Para aquellos que usan Laravel, este https://github.com/sitepoint-editors/google-laravel-2FA es una buena manera de resolver este problema.
fuente
Para usuarios de C #, ejecute esta aplicación de consola simple para comprender cómo verificar el código de token único. Tenga en cuenta que primero necesitamos instalar la biblioteca Otp.Net del paquete Nuget.
fuente