Existe uma API pública para usar o Google Authenticator ( autenticação de dois fatores) em aplicativos Web de execução automática (por exemplo, pilha LAMP)?
Existe uma API pública para usar o Google Authenticator ( autenticação de dois fatores) em aplicativos Web de execução automática (por exemplo, pilha LAMP)?
O projeto é de código aberto. Eu não usei isso. Mas está usando um algoritmo documentado (observado na RFC listada na página do projeto de código aberto), e as implementações do autenticador suportam várias contas.
O processo real é direto. O código único é, essencialmente, um gerador de números pseudo-aleatórios. Um gerador de números aleatórios é uma fórmula que uma vez fornecida uma semente, ou número inicial, continua a criar um fluxo de números aleatórios. Dada uma semente, enquanto os números podem ser aleatórios entre si, a própria sequência é determinística. Assim, quando você tiver o dispositivo e o servidor "sincronizados", os números aleatórios criados pelo dispositivo, sempre que você pressionar o "botão do próximo número", serão os mesmos números aleatórios que o servidor espera.
Um sistema de senha de uso único seguro é mais sofisticado do que um gerador de números aleatórios, mas o conceito é semelhante. Há também outros detalhes para ajudar a manter o dispositivo e o servidor sincronizados.
Portanto, não há necessidade de alguém para hospedar a autenticação, como, por exemplo, OAuth. Em vez disso, você precisa implementar esse algoritmo que seja compatível com os aplicativos que o Google fornece para os dispositivos móveis. Esse software está (deveria estar) disponível no projeto de código aberto.
Dependendo da sua sofisticação, você deve ter tudo o que precisa para implementar o lado do servidor desse processo, fornecer ao projeto OSS e ao RFC. Não sei se há uma implementação específica para o software do servidor (PHP, Java, .NET etc.)
Mas, especificamente, você não precisa de um serviço externo para lidar com isso.
O algoritmo está documentado na RFC6238 . É um pouco assim:
Eu já joguei implementando o algoritmo em javascript aqui: http://blog.tinisles.com/2011/10/google-authenticator-one-time-password-algorithm-in-javascript/
fonte
Há uma variedade 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/
Você deve ter cuidado ao implementar a autenticação de dois fatores, garantir que seus relógios no servidor e no cliente estejam sincronizados, que exista proteção contra ataques de força bruta no token e que a semente inicial usada seja adequadamente grande.
fonte
Você pode usar minha solução , postada como resposta à minha pergunta (há código e explicação completos do Python ):
É bastante fácil implementá-lo em PHP ou Perl, eu acho. Se você tiver algum problema com isso, entre em contato.
Também publiquei meu código no GitHub como módulo Python.
fonte
Encontrei o seguinte: https://github.com/PHPGangsta/GoogleAuthenticator . Eu testei e funciona bem para mim.
fonte
Há: https://www.gauthify.com que o oferece como um serviço
fonte
Sim, não precisa de serviço de rede, porque o aplicativo Google Authenticator não se comunica com o servidor do Google, ele apenas se mantém sincronizado com o segredo inicial que seu servidor gera (insira no telefone a partir do código QR) enquanto o tempo passa.
fonte
Não é LAMP, mas se você usa C #, este é o código que eu uso:
Código originalmente de:
https://github.com/kspearrin/Otp.NET
A classe Base32Encoding é desta resposta:
https://stackoverflow.com/a/7135008/3850405
Exemplo de programa:
Totp:
Base32Encoding:
fonte
Para aqueles que usam o Laravel, este https://github.com/sitepoint-editors/google-laravel-2FA é uma ótima maneira de resolver esse problema.
fonte
Para usuários de C #, execute este aplicativo simples do console para entender como verificar o código do token único. Observe que precisamos instalar a biblioteca Otp.Net a partir do pacote Nuget primeiro.
fonte