Dvojfaktor a passkeys
Nastavenie faktorov počas prihlásenia popisuje časť Prihlasovacie výzvy. Táto stránka sa venuje prihlásenému účtu, ktorý spravuje vlastné faktory. Samotné ceremoniály patria balíkom two-factor-for-laravel a passkeys-for-laravel; tento balík pridáva režimy guardov, opätovné overenie, invalidáciu, udalosti a notifikácie.
Dvojfaktorové overenie (TOTP + záložné kódy)
Dostupné, ak two_factor.mode guardu nie je off:
| Krok | HTTP | Odpoveď |
|---|---|---|
| Stav | GET two-factor | enabled, pending, recovery_codes_remaining, mode |
| Spustenie | POST two-factor | secret, provisioning_uri, qr_svg, recovery_codes, issuer |
| Potvrdenie | POST two-factor/confirm | status enabled + tokens |
| Nové záložné kódy | POST two-factor/recovery-codes | recovery_codes + tokens |
| Vypnutie (len v režime optional) | DELETE two-factor | status disabled + tokens |
Z PHP tie isté kroky spustí podkontext twoFactor() — odovzdajte token volajúceho $current, aby sa jeho zariadenie zachovalo a vrátil sa znovu vydaný pár:
use RoundlyConsulting\Auth\Facades\Authentication;
$twoFactor = Authentication::guard('users')->twoFactor();
$status = $twoFactor->status($user); // enabled, pending, recoveryCodesRemaining, mode
$setup = $twoFactor->start($user); // show $setup->qrSvg / ->secret, store ->recoveryCodes
$tokens = $twoFactor->confirm($user, $code, $current, $context);
$codes = $twoFactor->regenerateRecoveryCodes($user, $current, $context); // codes, tokens
$tokens = $twoFactor->disable($user, $current, $context);- Spustenie pri už zapnutom 2FA vráti two_factor_already_enabled (409); qr_svg je null, ak je two_factor.qr.enabled vypnuté alebo sa vykreslenie nepodarilo.
- Nesprávny alebo zastaraný potvrdzovací kód vráti invalid_code (422); vypnutie v režime required vráti two_factor_required (409).
- Potvrdenie, nové kódy aj vypnutie použijú invalidation.two_factor_changed (predvolene others): všetky ostatné relácie skončia a volajúci dostane nový pár — prejdite naň okamžite.
- Udalosti TwoFactorEnabled, TwoFactorDisabled a RecoveryCodesRegenerated; použitie záložného kódu pri prihlásení spustí RecoveryCodeUsed a pošle e-mail so zostávajúcim počtom.
Passkeys
Dostupné, ak passkeys.mode guardu nie je off:
| Krok | HTTP | Odpoveď |
|---|---|---|
| Zoznam | GET passkeys | Passkeys, najnovšie prvé |
| Options | POST passkeys/options | ceremonyId + publicKey |
| Registrácia | POST passkeys | 201 passkey + tokens |
| Premenovanie | PATCH passkeys/{passkey} | Passkey |
| Odstránenie | DELETE passkeys/{passkey} | status removed + tokens |
Z PHP cez podkontext passkeys() — rename() a remove() prijímajú Passkey alebo jeho id a passkey iného účtu je PasskeyNotFound:
use RoundlyConsulting\Auth\Facades\Authentication;
$passkeys = Authentication::guard('users')->passkeys();
$options = $passkeys->registrationOptions($user); // ceremonyId + publicKey
$added = $passkeys->register($user, $response, 'MacBook', $current, $context); // passkey, tokens
$passkeys->all($user); // newest first
$passkeys->rename($user, $passkeyId, 'Work laptop'); // a Passkey or its id
$tokens = $passkeys->remove($user, $passkeyId, $current, $context);- Neúspešná attestation vráti passkey_registration_failed (422); názvy sa sanitizujú.
- Odstránenie posledného passkey sa odmietne s last_credential (409), ak by účet nemal inú cestu dnu alebo guard passkeys vyžaduje.
- Registrácia aj odstránenie použijú invalidation.passkey_changed (predvolene none, takže tokens je null) a spustia PasskeyAdded / PasskeyRemoved.
Ako sa režimy kombinujú pri prihlásení
| Nastavenie | Účinok |
|---|---|
two_factor.mode = required | Účty bez TOTP ho musia nastaviť počas prihlásenia (alebo ho splniť passkey pri passkey_satisfies_required). |
passkeys.mode = required | Účty bez passkey si ho musia zaregistrovať počas prihlásenia. |
passkeys.second_factor | Či passkey môže (allowed) alebo musí (required_when_enrolled, required) byť druhým krokom po prihlásení heslom či e-mailom. |
passkeys.satisfies_mfa | Prihlásenie passkey s overením používateľa sa samo počíta ako viacfaktorové — aj pri dodatočnom overení kvôli riziku; pri false si dodatočné overenie vyžiada TOTP. |
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.