Czy istnieje publiczny interfejs API do korzystania z Google Authenticator (uwierzytelnianie dwuskładnikowe) w samodzielnie działających aplikacjach internetowych (np. Stos LAMP)?
Czy istnieje publiczny interfejs API do korzystania z Google Authenticator (uwierzytelnianie dwuskładnikowe) w samodzielnie działających aplikacjach internetowych (np. Stos LAMP)?
Projekt open source. Nie używałem tego. Ale używa udokumentowanego algorytmu (odnotowanego w RFC wymienionym na stronie projektu open source), a implementacje uwierzytelniające obsługują wiele kont.
Rzeczywisty proces jest prosty. Kod jednorazowy to zasadniczo generator liczb pseudolosowych. Generator liczb losowych to formuła, która po podaniu ziarna lub liczby początkowej kontynuuje tworzenie strumienia liczb losowych. Biorąc pod uwagę ziarno, podczas gdy liczby mogą być losowe względem siebie, sama sekwencja jest deterministyczna. Tak więc, gdy urządzenie i serwer są „zsynchronizowane”, losowe liczby tworzone przez urządzenie, za każdym razem, gdy naciśniesz przycisk „następny numer”, będą takie same, losowe liczby, których oczekuje serwer.
Bezpieczny system haseł jednorazowych jest bardziej wyrafinowany niż generator liczb losowych, ale koncepcja jest podobna. Istnieją również inne szczegóły ułatwiające synchronizację urządzenia i serwera.
Nie ma więc potrzeby, aby ktoś inny obsługiwał uwierzytelnianie, na przykład OAuth. Zamiast tego musisz wdrożyć ten algorytm, który jest kompatybilny z aplikacjami dostarczanymi przez Google dla urządzeń mobilnych. To oprogramowanie jest (powinno być) dostępne w projekcie open source.
W zależności od Twojego wyrafinowania, powinieneś mieć wszystko, czego potrzebujesz, aby zaimplementować ten proces po stronie serwera, podając projekt OSS i RFC. Nie wiem, czy istnieje konkretna implementacja oprogramowania serwera (PHP, Java, .NET itp.)
Ale w szczególności nie potrzebujesz usługi zewnętrznej, aby sobie z tym poradzić.
Algorytm jest udokumentowany w RFC6238 . Trochę tak:
Miałem zabawę z implementacją algorytmu w javascript tutaj: http://blog.tinisles.com/2011/10/google-authenticator-one-time-password-algorithm-in-javascript/
źródło
Istnieje wiele bibliotek dla PHP (The LAMP Stack)
PHP
https://code.google.com/p/ga4php/
http://www.idontplaydarts.com/2011/07/google-totp-two-factor-authentication-for-php/
Należy zachować ostrożność podczas implementacji uwierzytelniania dwuskładnikowego, należy upewnić się, że zegary na serwerze i kliencie są zsynchronizowane, że istnieje ochrona przed atakami siłowymi na token oraz że początkowe użyte ziarno jest odpowiednio duże.
źródło
Możesz skorzystać z mojego rozwiązania , zamieszczonego jako odpowiedź na moje pytanie (jest pełny kod Pythona i wyjaśnienie ):
Myślę, że zaimplementowanie go w PHP lub Perlu jest raczej łatwe. Jeśli masz z tym jakieś problemy, daj mi znać.
Opublikowałem również swój kod na GitHub jako moduł Pythona.
źródło
Znalazłem to: https://github.com/PHPGangsta/GoogleAuthenticator . Przetestowałem to i dla mnie działa dobrze.
źródło
Tam: https://www.gauthify.com, który oferuje to jako usługę
źródło
Tak, nie potrzebujesz usługi sieciowej, ponieważ aplikacja Google Authenticator nie komunikuje się z serwerem Google, po prostu synchronizuje się z początkowym sekretem, który generuje Twój serwer (wprowadzany do telefonu z kodu QR) w miarę upływu czasu.
źródło
Nie LAMP, ale jeśli używasz C #, to jest kod, którego używam:
Kod pierwotnie od:
https://github.com/kspearrin/Otp.NET
Klasa Base32Encoding pochodzi z tej odpowiedzi:
https://stackoverflow.com/a/7135008/3850405
Przykładowy program:
Totp:
Base32Encoding:
źródło
Dla osób używających Laravel ten https://github.com/sitepoint-editors/google-laravel-2FA jest dobrym sposobem rozwiązania tego problemu.
źródło
W przypadku użytkownika C # uruchom tę prostą aplikację konsolową, aby zrozumieć, jak zweryfikować kod jednorazowego tokenu. Zauważ, że najpierw musimy zainstalować bibliotekę Otp.Net z pakietu Nuget.
źródło