Každá chyba dedí z RoundlyConsulting\Passkeys\Exceptions\PasskeyException (RuntimeException). Zachyťte základ pre jednotnú odpoveď, alebo konkrétneho potomka pre jemnejšie riadenie:
use RoundlyConsulting\Passkeys\Exceptions\PasskeyException;
try {
$passkey = Passkeys::authenticate($response);
} catch (PasskeyException $e) {
// Return a uniform failure to the client; log $e server-side.
return response()->json(['message' => 'Sign-in failed.'], 422);
}Chyby ceremónie
| Výnimka | Kedy nastane |
|---|---|
InvalidClientData | clientData.type je nesprávny, odpoveď je poškodená, atestačný fmt nie je platný identifikátor formátu alebo identifikátor používateľa nie je base64url z náhodných bajtov. |
ChallengeExpired | Pre ID ceremónie neexistuje challenge — vypršala alebo už bola použitá. |
ChallengeMismatch | Challenge sa nezhoduje, bola vydaná pre iného používateľa alebo pre iný typ ceremónie. |
OriginMismatch | Origin nie je v allowliste alebo cross-origin ceremónia nie je povolená. |
RpIdMismatch | Hash RP ID v údajoch autentifikátora sa nezhoduje. |
InvalidAuthenticatorData | Chybné údaje autentifikátora, chýbajúci príznak prítomnosti, nekonzistentné príznaky zálohy, oprávnenosť na zálohu odlišná od registrovanej, chýbajúce atestované údaje alebo registrácia s ID kľúča dlhším ako 1023 bajtov. |
UserVerificationRequired | Vyžadovalo sa overenie používateľa, no autentifikátor ho neoveril. |
UnsupportedAlgorithm | Algoritmus kľúča nie je medzi ponúknutými. |
SignatureInvalid | Podpis neprešiel overením. |
SignCountRegression | Počítadlo sa neposunulo a sign_count_policy je reject. |
CredentialAlreadyRegistered | ID kľúča je už uložené, vrátane odvolaných — aj pre neúspešnú z dvoch súbežných registrácií s rovnakým ID. |
CredentialNotFound | Jednotný neúspech: neznámy kľúč, kľúč, ktorého vlastník bol zmazaný (aj cez soft delete), už nemá jeho identifikátor používateľa alebo sa už nedá priradiť k modelu, kľúč, ktorý ceremónia viazaná na používateľa neponúkla, prihlásenie bez mena bez userHandle, nesplnené očakávanie, kľúč odvolaný počas overovania alebo premenovanie či odvolanie kľúča iného účtu. |
InvalidExpectation | AuthenticationExpectation::owner() dostal neuložený model — programátorská chyba, nie výsledok ceremónie. |
Konfigurácia, dekódovanie a atestácia
| Výnimka | Kedy nastane |
|---|---|
InvalidConfiguration | Pri štarte: konfiguračná hodnota nesprávneho tvaru s názvom kľúča (table až pri prvom čítaní), nepreverený algoritmus, dôvera prísnejšia ako ignore pri attestation none alebo tolerancia mimo 0–3600. Pri prvej ceremónii: chýba rp.id alebo origins. Pri prvom použití: nečitateľná kotva dôvery. |
MalformedCbor | Údaje CBOR sú poškodené. |
InvalidCoseKey | Verejný COSE kľúč je neplatný. |
InvalidAttestation | Matematika atestačného vyhlásenia nesedí. |
AttestationUntrusted | Vyhlásenie je v poriadku, no politika ho odmietla — neukotvený koreň, žiadne nakonfigurované kotvy, self-atestácia pri basic, neplatná certifikačná cesta, expirovaný certifikát alebo nepovolený AAGUID. |
AttestationRequired | Stupeň dôvery vyžaduje vyhlásenie a autentifikátor poslal none. |
UnsupportedAttestationFormat | Formát nemá overovač (podporované sú none, packed a apple). |
PasskeyAssertionFailed | Zlyhala asercia Passkeys::fake(). |
Lokalizované hlásenia
Hlásenia sa prekladajú cez menný priestor passkeys::errors.*, ktorý je pribalený v angličtine a slovenčine a riadi sa jazykom aplikácie — publikujte passkeys-translations, ak ich chcete upraviť alebo doplniť ďalší jazyk. Hlásenie je celé v jazyku aplikácie: aj vlastné doplňujúce časti balíka — aký tvar musí mať nastavenie, prečo je atestačný výrok poškodený, ktorú požiadavku na certifikát nespĺňa — sú prekladové kľúče, kým doslovné tokeny ako x5c, CA:FALSE, OID či kľúče nastavení zostávajú nezmenené. Celočíselné a enum nastavenia overuje package-toolkit-for-laravel, ktorého hlásenia sú len v angličtine.
Text z nižšej vrstvy — dekodéra CBOR/COSE alebo parsera certifikátov — sa preložiť nedá, preto sa do hlásenia nikdy nedostane. Vývojárom zostáva k dispozícii:
- $e->getPrevious() — výnimka nižšej vrstvy (napríklad CryptoException) za MalformedCbor, InvalidCoseKey, InvalidAuthenticatorData::because(), UnsupportedAlgorithm::because() a za InvalidAttestation::malformedStatement() pri chybe parsera.
- $e->context() — ['reason' => '…'] pri štyroch továrňach, ktoré nesú dôvod, inak []. Obsluha výnimiek Laravelu ho do záznamu v logu pridá automaticky.
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.