Gibt es eine öffentliche API für die Verwendung des Google Authenticator (Zwei-Faktor-Authentifizierung) in selbst laufenden (z. B. LAMP-Stack) Webanwendungen?
Gibt es eine öffentliche API für die Verwendung des Google Authenticator (Zwei-Faktor-Authentifizierung) in selbst laufenden (z. B. LAMP-Stack) Webanwendungen?
Das Projekt ist Open Source. Ich habe es nicht benutzt. Es wird jedoch ein dokumentierter Algorithmus verwendet (siehe RFC auf der Open Source-Projektseite), und die Authentifizierungsimplementierungen unterstützen mehrere Konten.
Der eigentliche Vorgang ist unkompliziert. Der Einmalcode ist im Wesentlichen ein Pseudozufallszahlengenerator. Ein Zufallszahlengenerator ist eine Formel, die nach Angabe eines Startwerts oder einer Startnummer weiterhin einen Strom von Zufallszahlen erzeugt. Bei einem gegebenen Startwert ist die Sequenz selbst deterministisch, obwohl die Zahlen zufällig zueinander sein können. Sobald Sie also Ihr Gerät und den Server "synchron" haben, sind die Zufallszahlen, die das Gerät erstellt, jedes Mal, wenn Sie auf die Schaltfläche "Nächste Nummer" klicken, dieselben Zufallszahlen, die der Server erwartet.
Ein sicheres Einmalkennwortsystem ist ausgefeilter als ein Zufallszahlengenerator, aber das Konzept ist ähnlich. Es gibt auch andere Details, um das Gerät und den Server synchron zu halten.
Es ist also nicht erforderlich, dass jemand anderes die Authentifizierung hostet, z. B. OAuth. Stattdessen müssen Sie diesen Algorithmus implementieren, der mit den Apps kompatibel ist, die Google für die Mobilgeräte bereitstellt. Diese Software ist (sollte) im Open Source-Projekt verfügbar.
Abhängig von Ihrer Raffinesse sollten Sie über alles verfügen, was Sie zur Implementierung der Serverseite dieses Prozesses benötigen. Geben Sie das OSS-Projekt und den RFC an. Ich weiß nicht, ob es eine bestimmte Implementierung für Ihre Serversoftware gibt (PHP, Java, .NET usw.).
Insbesondere benötigen Sie jedoch keinen externen Service, um dies zu erledigen.
Der Algorithmus ist in RFC6238 dokumentiert . Geht ein bisschen so:
Ich hatte ein Spiel mit der Implementierung des Algorithmus in Javascript hier: http://blog.tinisles.com/2011/10/google-authenticator-one-time-password-algorithm-in-javascript/
quelle
Es gibt eine Vielzahl von Bibliotheken für PHP (The LAMP Stack)
PHP
https://code.google.com/p/ga4php/
http://www.idontplaydarts.com/2011/07/google-totp-two-factor-authentication-for-php/
Sie sollten bei der Implementierung der Zwei-Faktor-Authentifizierung vorsichtig sein. Sie müssen sicherstellen, dass Ihre Uhren auf dem Server und dem Client synchronisiert sind, dass ein Schutz gegen Brute-Force-Angriffe auf das Token vorhanden ist und dass der ursprünglich verwendete Startwert angemessen groß ist.
quelle
Sie können meine Lösung verwenden , die als Antwort auf meine Frage veröffentlicht wurde (es gibt vollständigen Python-Code und eine Erklärung ):
Es ist ziemlich einfach, es in PHP oder Perl zu implementieren, denke ich. Wenn Sie Probleme damit haben, lassen Sie es mich bitte wissen.
Ich habe meinen Code auch als Python-Modul auf GitHub gepostet .
quelle
Ich habe Folgendes gefunden: https://github.com/PHPGangsta/GoogleAuthenticator . Ich habe es getestet und funktioniert gut für mich.
quelle
Theres: https://www.gauthify.com , das es als Dienstleistung anbietet
quelle
Ja, Sie benötigen keinen Netzwerkdienst, da die Google Authenticator-App nicht mit dem Google-Server kommuniziert. Sie wird nur mit dem ursprünglichen Geheimnis synchronisiert, das Ihr Server im Laufe der Zeit generiert (Eingabe über QR-Code in Ihr Telefon).
quelle
Nicht LAMP, aber wenn Sie C # verwenden, ist dies der Code, den ich verwende:
Code ursprünglich von:
https://github.com/kspearrin/Otp.NET
Die Base32Encoding-Klasse stammt aus dieser Antwort:
https://stackoverflow.com/a/7135008/3850405
Beispielprogramm:
Totp:
Base32Encoding:
quelle
Für diejenigen, die Laravel verwenden, ist diese https://github.com/sitepoint-editors/google-laravel-2FA eine gute Möglichkeit, dieses Problem zu lösen.
quelle
Führen Sie für C # -Benutzer diese einfache Konsolen-App aus, um zu verstehen, wie der einmalige Token-Code überprüft wird. Beachten Sie, dass wir zuerst die Bibliothek Otp.Net aus dem Nuget-Paket installieren müssen .
quelle