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

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