Druhý faktor a očakávaný vlastník
Po prihlásení heslom, magic linkom alebo jednorazovým kódom už účet poznáte. Vyžiadajte si jeho prístupový kľúč cez Passkeys::for($user), ktorý výsledok viaže na tento účet (AuthenticationExpectation::owner($user)):
use RoundlyConsulting\Passkeys\DataTransferObjects\AuthenticationOptionsOverrides;
use RoundlyConsulting\Passkeys\Enums\UserVerification;
use RoundlyConsulting\Passkeys\Facades\Passkeys;
// 1. Options for the known account, demanding user verification for this step only.
$options = Passkeys::for($user)->authenticationOptions(new AuthenticationOptionsOverrides(
userVerification: UserVerification::Required,
timeoutMs: 30_000,
));
// 2. Verify, and refuse any credential that is not this exact account's.
$passkey = Passkeys::for($user)->authenticate($response);AuthenticationOptionsOverrides nastaví userVerification a timeoutMs pre jednu ceremóniu; prázdne položky preberú hodnotu z konfigurácie. Požiadavka sa uloží spolu s challenge, takže overovanie vynúti presne to, čo sľúbili možnosti — step-up s required odmietne podpis iba s prítomnosťou používateľa, aj keď je globálne predvolené preferred.
Viac guardov
Ak kľúče vlastnia modely viacerých guardov, obmedzte prihlásenie bez mena na jeden typ vlastníka:
use RoundlyConsulting\Passkeys\DataTransferObjects\AuthenticationExpectation;
$passkey = Passkeys::authenticate(
$response,
AuthenticationExpectation::ownerType((new Client)->getMorphClass()),
);Ako sa očakávania správajú
- AuthenticationExpectation::owner($user) — ktoré použije Passkeys::for($user)->authenticate() — overí morph typ aj kľúč (int, číselný reťazec, UUID aj ULID); ::ownerType($morphClass) overí len typ. Obe môžete odovzdať aj plochému volaniu Passkeys::authenticate($response, $expect).
- Kontrola beží hneď po nájdení kľúča — pred spotrebovaním challenge a pred zmenou počítadla — takže nezhoda nič nezapíše a správny vlastník môže tú istú ceremóniu dokončiť.
- Nezhoda vráti jednotné CredentialNotFound, takže o iných účtoch nič neprezradí.
- owner() odmietne neuložený model výnimkou InvalidExpectation namiesto tichého rozšírenia na všetky účty daného typu.
Cez $user->hasPasskeys() ponúknite krok s prístupovým kľúčom len účtom, ktoré majú aktívny kľúč a naozaj ho dokážu dokončiť.
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.