Existe-t-il une API publique pour utiliser Google Authenticator ( authentification à deux facteurs) sur des applications Web auto-exécutables (par exemple, pile LAMP)?
Existe-t-il une API publique pour utiliser Google Authenticator ( authentification à deux facteurs) sur des applications Web auto-exécutables (par exemple, pile LAMP)?
Le projet est open source. Je ne l'ai pas utilisé. Mais il utilise un algorithme documenté (noté dans le RFC répertorié sur la page du projet open source), et les implémentations d'authentificateur prennent en charge plusieurs comptes.
Le processus réel est simple. Le code temporel unique est, essentiellement, un générateur de nombres pseudo aléatoires. Un générateur de nombres aléatoires est une formule qui, une fois donnée une graine, ou un nombre de départ, continue de créer un flux de nombres aléatoires. Étant donné une graine, alors que les nombres peuvent être aléatoires les uns par rapport aux autres, la séquence elle-même est déterministe. Ainsi, une fois que votre appareil et le serveur sont "synchronisés", les nombres aléatoires créés par l'appareil, chaque fois que vous appuyez sur le bouton "numéro suivant", seront les mêmes, aléatoires, que le serveur attend.
Un système de mot de passe à usage unique sécurisé est plus sophistiqué qu'un générateur de nombres aléatoires, mais le concept est similaire. Il existe également d'autres détails pour vous aider à synchroniser l'appareil et le serveur.
Il n'est donc pas nécessaire que quelqu'un d'autre héberge l'authentification, par exemple OAuth. Au lieu de cela, vous devez mettre en œuvre cet algorithme compatible avec les applications fournies par 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 dont vous avez besoin pour implémenter le côté serveur de ce processus, donner le projet OSS et le RFC. Je ne sais pas s'il existe une implémentation spécifique pour votre logiciel serveur (PHP, Java, .NET, etc.)
Mais, en particulier, vous n'avez pas besoin d'un service hors site pour gérer cela.
L'algorithme est documenté dans RFC6238 . Va un peu comme ça:
J'ai eu un jeu mettant en œuvre l'algorithme en javascript ici: http://blog.tinisles.com/2011/10/google-authenticator-one-time-password-algorithm-in-javascript/
la source
Il existe une variété de bibliothèques pour PHP (The LAMP Stack)
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 l'authentification à deux facteurs, vous devez vous assurer que vos horloges sur le serveur et le client sont synchronisées, qu'une protection est en place contre les attaques par force brute sur le jeton et que la valeur de départ initiale utilisée est suffisamment grande.
la source
Vous pouvez utiliser ma solution , publiée comme réponse à ma question (il y a le code Python complet et l' explication ):
Il est plutôt facile de l'implémenter en PHP ou Perl, je pense. Si vous rencontrez des problèmes, merci de me le faire savoir.
J'ai également publié mon code sur GitHub en tant que module Python.
la source
J'ai trouvé ceci: https://github.com/PHPGangsta/GoogleAuthenticator . Je l'ai testé et fonctionne très bien pour moi.
la source
Theres: https://www.gauthify.com qui le propose en tant que service
la source
Oui, pas besoin de service réseau, car l'application Google Authenticator ne communiquera pas avec le serveur Google, elle se synchronise simplement avec le secret initial que votre serveur génère (entrée dans votre téléphone à partir du code QR) pendant que le temps passe.
la source
Pas LAMP mais si vous utilisez C # c'est le code que j'utilise:
Code originaire de:
https://github.com/kspearrin/Otp.NET
La classe Base32Encoding est issue de cette réponse:
https://stackoverflow.com/a/7135008/3850405
Exemple de programme:
Totp:
Encodage Base32:
la source
Pour ceux qui utilisent Laravel, ce https://github.com/sitepoint-editors/google-laravel-2FA est un bon moyen de résoudre ce problème.
la source
Pour l'utilisateur C #, exécutez cette application console simple pour comprendre comment vérifier le code de jeton à usage unique. Notez que nous devons d'abord installer la bibliothèque Otp.Net à partir du package Nuget.
la source