NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Auth for Laravel

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:

KrokHTTPOdpoveď
StavGET two-factorenabled, pending, recovery_codes_remaining, mode
SpusteniePOST two-factorsecret, provisioning_uri, qr_svg, recovery_codes, issuer
PotvrdeniePOST two-factor/confirmstatus enabled + tokens
Nové záložné kódyPOST two-factor/recovery-codesrecovery_codes + tokens
Vypnutie (len v režime optional)DELETE two-factorstatus 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:

KrokHTTPOdpoveď
ZoznamGET passkeysPasskeys, najnovšie prvé
OptionsPOST passkeys/optionsceremonyId + publicKey
RegistráciaPOST passkeys201 passkey + tokens
PremenovaniePATCH passkeys/{passkey}Passkey
OdstránenieDELETE 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_mfaPrihlá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 kryptomien

Odoslaní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.