148 votes

Google Authenticator disponible comme un service public ?

Existe-t-il une API publique permettant d'utiliser Google Authenticator ( authentification à deux facteurs) sur des applications Web à exécution automatique (par exemple, une pile LAMP)?

121voto

Will Hartung Points 57465

Le projet est open source. Je n'ai pas utilisé. Mais il est documenté à l'aide d'un algorithme (indiqué dans la RFC répertoriés sur le projet open source de la page), et l'authentificateur implémentations en charge plusieurs comptes.

Le processus est simple. Le code est, essentiellement, un générateur de nombre pseudo-aléatoire. Un générateur de nombre aléatoire est une formule qui une fois donné une graine, ou le nombre de départ, continue de créer un flux de nombres aléatoires. Donné une graine, tandis que le nombre peut être le hasard les uns des autres, la séquence elle-même est déterministe. Donc, une fois que vous avez votre appareil et le serveur de "synchronisation", puis les nombres aléatoires que l'appareil crée, à chaque fois que vous cliquez sur "suivant le numéro de bouton", sera le même, au hasard, les chiffres le serveur attend.

Sécurisé une fois le mot de passe système est plus sophistiqué qu'un générateur de nombre aléatoire, mais le concept est similaire. Il existe également d'autres informations pour aider à garder l'appareil et le serveur de synchronisation.

Donc, il n'y a pas besoin de quelqu'un d'autre pour accueillir l'authentification, comme, par exemple le protocole OAuth. Au lieu de cela vous avez besoin pour mettre en œuvre cet algorithme qui est compatible avec les applications Google pour les appareils mobiles. Ce logiciel est (devrait être) disponible sur le projet open source.

En fonction de votre sophistication, vous devriez avoir tout ce que vous devez mettre en œuvre la partie serveur de ce processus donne l'OSS projet et de la RFC. Je ne sais pas si il y a une mise en œuvre spécifique de votre logiciel de serveur (PHP, Java, .NET, etc.)

Mais, plus précisément, vous n'avez pas besoin d'un service hors site pour gérer cela.

58voto

russau Points 4835

L'algorithme est documenté dans RFC6238. Va un peu à ça:

  • votre serveur donne à l'utilisateur le secret de l'installer dans Google Authenticator. Google ce faire car un QR code documenté ici.
  • Google Authenticator génère un code à 6 chiffres par un SHA1-HMAC du temps Unix et le secret (beaucoup plus de détails à ce sujet dans la RFC)
  • Le serveur connaît aussi le secret / unix de temps pour vérifier le code à 6 caractères.

J'ai eu une pièce de théâtre mise en œuvre de l'algorithme en javascript ici: http://blog.tinisles.com/2011/10/google-authenticator-one-time-password-algorithm-in-javascript/

21voto

James Points 121

Il existe une variété de librairies PHP (La Pile LAMP)

PHP

https://code.google.com/p/ga4php/

http://www.idontplaydarts.com/2011/07/google-totp-two-factor-authentication-for-php/

Vous devez être prudent lors de la mise en œuvre de deux facteurs d'authentification, vous devez vous assurer que vos horloges sur le serveur et le client sont synchronisés, qu'il y a en place une protection contre les attaques en force sur le jeton et que la graine initiale utilisée est assez grande.

9voto

Tadeck Points 37046

Vous pouvez utiliser ma solution, posté comme la réponse à ma question (il y a plein de code Python et explication):

Google Authenticator mise en œuvre en Python

Il est plutôt facile à mettre en œuvre en PHP ou Perl, je pense. Si vous avez des problèmes avec cela, s'il vous plaît laissez-moi savoir.

J'ai aussi posté mon code sur GitHub comme module Python.

3voto

NoviceCoding Points 1112

Theres: https://www.gauthify.com qui l'offre en tant que service

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X