---
title: "Prihlasovacie výzvy — Auth for Laravel | Roundly"
description: "Engine viackrokových výziev — druhé faktory, kroky s passkey a vynútené nastavenie, pravidlá ich výberu a bezpečnosť stavu."
url: https://roundly-consulting.com/sk/open-source/navody/auth-for-laravel/prihlasovacie-vyzvy
language: sk
---

[Všetky balíky](https://roundly-consulting.com/sk/open-source.md)

[Auth for Laravel](https://roundly-consulting.com/sk/open-source/navody/auth-for-laravel.md)

# Prihlasovacie výzvy

Keď sa prvý faktor overí, no treba viac, výsledkom je výzva: nepriehľadný token (ukladá sa len jeho HMAC), zostávajúce kroky a počet zostávajúcich pokusov. Kroky sa dokončujú v poradí; overovacie kroky sú vždy pred krokmi nastavenia:

```json
POST /users/auth/login
{ "identifier": "ada@example.com", "password": "…" }

200 { "status": "challenge", "challenge_token": "…", "expires_at": "…", "attempts_left": 5, "method": "password",
      "completed": [], "remaining": [ { "step": "second_factor", "methods": ["totp", "recovery_code", "passkey"] } ] }

POST /users/auth/challenge/two-factor
{ "challenge_token": "…", "code": "123456" }

200 { "status": "authenticated", "token_type": "Bearer", "access_token": "eyJ…", "refresh_token": "…", "session_id": "0199…" }
```

## Kroky

| Krok | Metódy | Endpointy |
| --- | --- | --- |
| `second_factor` | totp, recovery\_code, passkey | `challenge/two-factor, challenge/passkey/options + challenge/passkey` |
| `passkey` | passkey | `challenge/passkey/options + challenge/passkey` |
| `enrol_two_factor` | totp\_enrolment | `challenge/two-factor/enrol + …/confirm` |
| `enrol_passkey` | passkey\_enrolment | `challenge/passkey/enrol/options + challenge/passkey/enrol` |

## Ktoré kroky prihlásenie potrebuje

Závisí to od 2FA režimu guardu, režimu passkeys a pravidla passkey ako druhého faktora, od toho, čo má účet nastavené, a od reakcie na riziko:

- Primárne passkey — nastavené TOTP sa vyžaduje, len ak je satisfies\_mfa vypnuté; pri two\_factor.mode = required bez TOTP sa nastavenie vynúti, ak je satisfies\_mfa vypnuté alebo required\_with\_passkey zapnuté.
- E-mailové spôsoby (magic link, e-mailový kód, pozvánka) preskočia pravidlá druhého faktora — bez overovacieho kroku —, ak je two\_factor.after\_email\_login false; passkey, ktorý vyžaduje passkeys.mode = required, sa však aj tak zaregistruje. Obnova hesla nikdy nie je výnimkou a rovnako ani registrácia (nepreukazuje vlastníctvo schránky).
- Nastavené TOTP znamená krok second\_factor (TOTP, záložný kód a passkey pri second\_factor = allowed).
- passkeys.second\_factor = required (alebo required\_when\_enrolled pri existujúcom passkey) pridá krok passkey — alebo registráciu passkey, ak ho účet nemá.
- two\_factor.mode = required bez TOTP vynúti nastavenie — alebo prijme passkey účtu ako druhý faktor pri second\_factor = allowed a zapnutom passkey\_satisfies\_required; passkeys.mode = required bez passkey vynúti registráciu passkey.
- Reakcia na riziko require\_second\_factor pridá na začiatok krok druhého faktora, alebo prihlásenie zamietne, ak ho účet nemá. Platí pre každý spôsob prihlásenia — after\_email\_login = false vyníma e-mailové prihlásenia z pravidiel druhého faktora, nikdy nie z dodatočného overenia. Prihlásenie passkey, ktoré sa počíta ako MFA (satisfies\_mfa), už dodatočným overením je; inak sa ráta len TOTP alebo záložný kód, a ak ich účet nemá, prihlásenie sa zamietne.

## Konfigurácia

```php
'challenge' => [
    'ttl' => 300,
    'enrolment_ttl' => 900,
    'max_attempts' => 5,
    'allow_enrolment' => true,
    'enrolment_requires_verified_email' => true,
    'bind' => ['user_agent' => true, 'ip' => false, 'device_header' => true],
    'max_active_per_account' => 3,   // older active challenges are superseded
],

'two_factor' => [
    'mode' => env('AUTHENTICATION_TWO_FACTOR', 'optional'),  // off|optional|required
    'after_email_login' => true,          // magic link / email OTP / invitation also need the 2nd factor
    'required_with_passkey' => false,     // passkey primary still forces TOTP enrolment when mode=required
    'passkey_satisfies_required' => true, // a passkey second factor satisfies mode=required (false ⇒ TOTP also required)
],

'passkeys' => [
    'mode' => env('AUTHENTICATION_PASSKEYS', 'optional'),    // off|optional|required
    'second_factor' => 'allowed',        // off|allowed|required_when_enrolled|required
    'satisfies_mfa' => true,             // a UV passkey login needs no further factor
],
```

## Životný cyklus a bezpečnosť

- Viazanie na zariadenie — odtlačok z user agenta, IP a X-Device-Id podľa challenge.bind (IP predvolene vypnutá: mobilní klienti menia sieť počas prihlásenia), porovnávaný v konštantnom čase.
- Pokusy — kód TOTP, záložný kód aj kód na potvrdenie nastavenia si pokus atomicky započíta ešte pred overením, takže súbežné hádanie nikdy neoverí viac kódov, než dovoľuje max\_attempts; platný kód pokus vráti. Passkey assertion sa započíta len pri neúspechu. Pri max\_attempts sa výzva zneplatní a odpoveď obsahuje attempts\_left.
- Nahradenie — aktívnych zostane najviac max\_active\_per\_account výziev; staršie sa nahradia pred vložením novej aj po ňom, takže ani súbežné prihlásenia ich nenechajú aktívnych viac.
- Jednorazovosť — kroky postupujú s optimistickou kontrolou verzie voči kópii, ktorú krok overil, a tento krok musí byť stále na rade: požiadavka, ktorá prehrala súbeh (passkey assertion predbehnutá znova spusteným ceremoniálom), dostane challenge\_invalid a nasledujúci krok nepreskočí; dokončenie znova overí stav účtu aj snímku verzie tokenu, takže obnova hesla, deaktivácia či odhlásenie všade medzitým prihlásenie zruší.
- Invalidácia — každá invalidácia s rozsahom iným ako none zneplatní aj aktívne výzvy účtu.

## Nastavenie faktora vo výzve

Vynútené nastavenie vyžaduje challenge.allow\_enrolment a — pri enrolment\_requires\_verified\_email — overenú adresu; inak je odpoveďou enrolment\_required (403). Opätovné spustenie nastavenia ho vydá znova bez započítania pokusu; nesprávne potvrdenie sa započíta. Potvrdenie TOTP spustí TwoFactorEnabled a ukončí ostatné relácie, samotnú výzvu však nie.

## 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](https://roundly-consulting.com/sk/podporte-nas.md)

Odoslaním daru súhlasíte s našimi [podmienkami prijímania darov](https://roundly-consulting.com/sk/podmienky-darov.md).

[Podporte našu open-source prácu (otvorí sa v novej karte)](https://donate.stripe.com/dRmeVe8FX5PF1Qd9pXcEw00) [Pridajte sa k nám na Patreone (otvorí sa v novej karte)](https://www.patreon.com/cw/roundly)

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

[Ponuka do 48 hodín](https://roundly-consulting.com/sk/kontakt.md) [Prezrieť všetky balíky](https://roundly-consulting.com/sk/open-source/navody/auth-for-laravel.md)
