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)?
Réponses
Trop de publicités?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.
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/
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.
Vous pouvez utiliser ma solution, posté comme la réponse à ma question (il y a plein de code Python et explication):
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.
Theres: https://www.gauthify.com qui l'offre en tant que service