Open source
Two-Factor for Laravel
composer require roundly-consulting/two-factor-for-laravelPrehľad
Natívne dvojfaktorové overovanie pre Laravel postavené na štandarde TOTP podľa RFC 6238, ktorému rozumie každá autentifikačná aplikácia. Vygeneruje tajný kľúč a provisioning URI otpauth://, potvrdí aktiváciu, overuje prihlasovacie kódy porovnaním v konštantnom čase s atomickou ochranou proti opakovaniu a vydá jednorazové záložné kódy pre prípad straty telefónu — všetko cez TwoFactor::for($user). Tajné kľúče sú v databáze šifrované, záložné kódy hašované a obmedzenie pokusov pre každý účet je predvolene zapnuté. Licencia MIT a minimum závislostí: výpočty TOTP zabezpečuje náš vlastný crypto-for-laravel — v bezpečnostnej ceste nie je žiadna externá kryptografická ani QR knižnica.
Čo získate
Riadená aktivácia
Spustenie vráti tajný kľúč, URI otpauth:// a záložné kódy práve raz; 2FA sa zapne až po potvrdení prvým kódom.
Overovanie odolné voči opakovaniu
Porovnanie v konštantnom čase a atomické zabratie časového kroku — zachytený kód sa nedá použiť dvakrát, ani pri dvoch súbežných požiadavkách.
Jednorazové záložné kódy
Predvolene hašované, spotrebované pod zámkom riadku a každý pokus vráti, koľko kódov používateľovi zostáva.
Vstavaná ochrana proti hádaniu
Predvolene päť pokusov za minútu na účet, každý započítaný ešte pred overením — s typovanou výnimkou, udalosťou a vypnutím jedným riadkom.
Šifrované a skryté
Tajný kľúč je šifrovaný vaším APP_KEY a citlivé stĺpce sa nikdy neobjavia v toArray() ani v JSON odpovedi.
Kompatibilné so štandardom
Predvolený profil RFC 6238 — SHA1, 6 číslic, 30 sekúnd — takže kľúče z inej knižnice generujú tie isté kódy a nikto nemusí 2FA aktivovať znova; uložené stĺpce sa raz prešifrujú.
Fasáda, DI alebo akcie
TwoFactor::for($user), vložený TwoFactorService alebo jedna trieda akcie — a TwoFactor::fake() vo vašich testoch zaznamená každé volanie.
Dokumentácia
Inštalácia
Inštalácia cez Composer, publikovanie migrácie, ktorá pridá štyri nullable stĺpce, a voliteľne publikovanie konfigurácie.
Konfigurácia
Všetky kľúče config/two-factor.php s predvolenými hodnotami — TOTP parametre, vydavateľ, záložné kódy, limiter, replay guard a stĺpce.
Nastavenie modelu
Implementujte TwoFactorAuthenticatable, použite trait HasTwoFactorAuthentication a rozbaľte twoFactorCasts() do castov modelu.
Fasáda TwoFactor
Jeden vstupný bod: TwoFactor::for($user) na aktiváciu, overenie pri prihlásení, stav, záložné kódy a vypnutie, plus ploché TOTP primitíva.
DI a akcie
Namiesto fasády si vložte kontrakt TwoFactorService alebo spustite jednu akciu — ten istý kód a fake platí aj tu.
Aktivácia
Spustite čakajúcu aktiváciu, raz zobrazte tajný kľúč, URI pre QR kód a záložné kódy a potvrďte ju prvým kódom z aplikácie.
Vykreslenie QR kódu
Premeňte provisioning URI otpauth:// na QR kód — na serveri ako SVG cez qr-for-laravel alebo priamo vo frontende.
Overovanie pri prihlásení
Overte kód cez TwoFactor::for($user)->attempt() — najprv TOTP s ochranou proti opakovaniu, potom jednorazový záložný kód.
Záložné kódy
Jednorazové záložné kódy pre stratené zariadenie — vznikajú pri aktivácii, predvolene sa hašujú, spotrebúvajú atomicky a dajú sa obnoviť.
Ochrana proti hádaniu
Obmedzenie pokusov pre každý účet, započítané pred každou kontrolou — predvolene päť za minútu — s výnimkou, udalosťou a možnosťou vypnutia.
Ochrana proti opakovaniu
Každý prijatý kód atomicky zaberie svoj časový krok, takže zachytený kód sa nedá znova použiť — v stĺpci, v cache alebo vo vlastnom guarde.
Metódy traitu a akcie
Celý životný cyklus ako metódy modelu používateľa — skratky nad TwoFactor::for($this), takže ich fake zaznamená a bežia tie isté akcie.
Udalosti
Deväť udalostí pre aktiváciu, overovanie, záložné kódy, opakovanie a blokovanie — každá nesie používateľa, nikdy nie tajný kľúč či kód.
Výnimky
Jedna základná trieda TwoFactorException a sedem typovaných zlyhaní — nesprávny kód, stav aktivácie, limit pokusov, chybná konfigurácia a ďalšie.
Bezpečnostný model
Šifrované tajné kľúče, hašované záložné kódy, porovnanie v konštantnom čase, atomická ochrana proti opakovaniu a kontrolovaná konfigurácia.
Prechod z inej TOTP knižnice
Kľúče z akejkoľvek RFC 6238 knižnice generujú tie isté kódy, nikto 2FA neaktivuje znova — stĺpce stačí raz prešifrovať. Vrátane prechodu z Fortify.
Testovanie
TwoFactor::fake() nasadí programovateľného dvojníka bez kryptografie, ktorý zaznamená každé volanie — alebo testujte skutočné kódy pri zmrazenom čase.
Požiadavky
PHP 8.4+, Laravel 12 alebo 13 a nastavený APP_KEY — s našimi balíkmi crypto, enums a package-toolkit ako závislosťami.
Prejavte lásku k open source
Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.
Ďalšie spôsoby podpory vrátane kryptomienOdoslaním daru súhlasíte s našimi podmienkami prijímania darov.
Chcete to zabudovať do svojho produktu?
Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.