Slovník pojmů

Autentizace

Autentizace odpovídá na otázku „kdo to je?“. Je nezbytná pro přihlášení do aplikace, ale bez následné serverové autorizace sama neuděluje přístup k objednávce, účtu ani administraci.

Stručná definice

Ověření identity není rozhodnutí o oprávnění.

Při autentizaci subjekt prokáže něco, co zná, vlastní nebo čím je: například heslo, passkey, jednorázový kód, hardwarový klíč nebo kryptografický podpis služby. Aplikace důkaz ověří a podle výsledku vytvoří přihlášenou session nebo vydá omezený access token. Citlivější operace mohou vyžadovat opětovné ověření či více faktorů.

Autentizace neznamená, že je subjekt automaticky oprávněný k dané akci. Přihlášený skladník a správce účtů mohou být oba úspěšně autentizováni, ale nemají stejné pravomoci. Na každém relevantním serverovém endpointu proto následuje autorizace nad požadovaným zdrojem, rolí, tenantem a aktuálním kontextem.

K čemu slouží

Při vstupu uživatele i při komunikaci služeb

Ověření identity se netýká jen formuláře s heslem. Potřebují je browserové aplikace, API i automatizované integrační procesy.

  • přihlášení zákazníka do účtu nebo operátora do e-shopové administrace
  • vícefaktorové ověření před změnou platebních údajů, hesla nebo role
  • single sign-on přes poskytovatele identity pomocí OpenID Connect
  • ověření strojového klienta přístupovým tokenem, klientským certifikátem nebo jiným spravovaným credentialem
  • opětovné ověření identity u rizikové operace nebo po dlouhé nečinnosti relace

Praktický příklad

Přihlášení operátora před prací s objednávkami

Aplikace načte účet podle přihlašovacího jména a ověří předložené heslo proti bezpečně uloženému hashovanému heslu. Při neúspěchu vrátí obecnou chybu a použije omezení pokusů, aby nezjednodušovala hádání účtů. Při úspěchu vytvoří novou relaci s rotovaným identifikátorem; heslo ani jeho hash se do session neukládají.

Ukázka znázorňuje pouze kritickou podmínku. V reálné aplikaci jí předchází validace vstupu, rate limiting a jednotná odpověď pro neexistující účet. Po založení relace každou další změnu objednávky stále ověřuje autorizace na serveru.

if (!password_verify($submittedPassword, $account->passwordHash)) {
    throw new AuthenticationFailed();
}

session_regenerate_id(true); // až po úspěšném ověření
$_SESSION['account_id'] = $account->id;

Jak funguje

Od předložení důkazu po ověřený subjekt

Dobře navržený tok odděluje ověření identity, vydání credentialu pro další request a následnou kontrolu oprávnění.

  1. Subjekt se identifikuje Předá uživatelské jméno, e-mail, identitu od poskytovatele nebo identifikátor strojového klienta. Identifikace ještě není důkaz.
  2. Předloží přihlašovací faktor Může jít o heslo, passkey, OTP nebo podpis. Výběr faktoru odpovídá hodnotě účtu a riziku operace.
  3. Server důkaz ověří Heslo se porovnává s hashovanou hodnotou, token s očekávanými vlastnostmi a externí identita s ověřeným protokolem. Selhání se omezuje a zaznamenává přiměřeně riziku.
  4. Vznikne session nebo token Server vytvoří odvolatelnou session nebo vydá omezený credential pro další komunikaci. Jeho životnost a ochrana se navrhují samostatně.
  5. Server autorizuje každý přístup Ověřená identita se propojí s aktuálními rolemi, vlastnictvím a politikou nad konkrétním zdrojem. Nejde o jednorázový krok UI.

Hlavní části

Důkaz identity, ochrana credentialu a řízení rizika

Bezpečná autentizace je sled kroků. Žádná jednotlivá knihovna nevyřeší slabé heslo, únik session ani příliš široké oprávnění.

Hesla a hashování

Heslo se neukládá v čitelné podobě ani se „nešifruje pro pozdější přečtení“. Server ukládá vhodný adaptivní hash a při ověření používá bezpečnou knihovní funkci.

Vícefaktorové ověření

Kombinuje nezávislé druhy důkazu, například heslo a passkey či jednorázový kód. Je zvlášť důležité pro administrátory a vysoce citlivé změny.

Rate limiting a detekce

Omezení pokusů, bezpečný recovery tok a monitoring chrání proti hádání credentialů. Nemá ale bezdůvodně zablokovat legitimní uživatele.

Reautentizace

Riziková operace může chtít čerstvý důkaz identity i během platné session, například před změnou hesla nebo výplatních údajů.

Strojová identita

Integrace nemá sdílet lidské heslo. Používá vlastní credential, úzké scope, rotaci tajemství a dohledatelného vlastníka.

Vztah k jiným přístupům

Session, JWT a externí login jsou prostředky, ne náhrada pravidel

Jejich vhodnost určuje typ klienta, možnost odvolání, citlivost dat a hranice mezi službami.

Session
Server po přihlášení drží stav a může jej ihned zneplatnit. Browser obvykle nese jen session ID v cookie.
JWT
Podepsaný token není automaticky důkaz bezpečného loginu. Příjemce musí ověřit podpis, časová tvrzení, publikum a zvolit plán pro odvolání.
OpenID Connect
Přidává nad OAuth 2.0 standardní identity vrstvu. Aplikace i tak ověřuje očekávaného poskytovatele, tok a platnost odpovědi.
Autorizace
Rozhoduje o akci nad zdrojem. Například platná session neznamená oprávnění zrušit libovolnou objednávku.

Výhody a omezení

Silnější přihlášení zmenšuje riziko, neodstraňuje potřebu návrhu

Přínosy

  • přiřadí request konkrétnímu uživateli nebo službě pro další bezpečnostní rozhodnutí
  • MFA a reautentizace snižují dopad odcizeného či uhádnutého hesla
  • oddělené credentialy pro lidi a služby zlepšují revokaci i audit
  • session nebo token lze omezit dobou, účelem a rozsahem použití

Rizika a časté chyby

  • zaměnit úspěšné přihlášení za oprávnění pracovat s každým zdrojem
  • ukládat hesla čitelně, vracet příliš přesné login chyby nebo vynechat ochranu proti hádání
  • považovat podepsaný JWT za bezpečný bez ověření jeho kontextu a životnosti
  • spoléhat na schování tlačítka ve frontendu místo serverové autorizace

Kdy ji navrhnout pečlivěji

Síla ověření odpovídá hodnotě účtu a konkrétní akci

Běžný zákaznický účet, interní administrace a partnerské API mají odlišné hrozby a potřeby. Administrace objednávek či uživatelských rolí si zpravidla zaslouží MFA, bezpečné obnovení přístupu, řízení session a audit. Automatizovaná integrace zase potřebuje vlastní credential s minimálními oprávněními, ne sdílený účet zaměstnance.

Výběr mezi cookie session, bearer tokenem a externím poskytovatelem identity není volba jedné univerzálně nejlepší technologie. Podstatné je, aby aplikace rozuměla způsobu předání credentialu, uměla jej zneplatnit nebo omezit a na všech vstupních cestách provedla serverovou autorizaci.

Na co myslet

Ověřovat na serveru, předcházet útokům a chránit další relaci

Bezpečný login tok se testuje i v chybových a obnovovacích stavech, ne jen pozitivním testem formuláře.

  • ukládat hesla pomocí vhodného adaptivního hashe a nevypisovat jejich hodnoty do logů či chyb
  • používat MFA nebo čerstvé ověření pro citlivé účty a operace podle rizika
  • omezovat pokusy, bezpečně navrhnout obnovu hesla a vracet přiměřeně obecné chyby
  • po úspěchu chránit session či token, rotovat session ID a nastavit dobu platnosti
  • testovat, že po autentizaci server stále odmítne akci bez potřebného oprávnění

Časté otázky

Autentizace v praxi

Jaký je rozdíl mezi autentizací a autorizací?

Autentizace ověřuje identitu: kdo request poslal. Autorizace rozhoduje, zda tento subjekt smí danou operaci provést nad konkrétním zdrojem.

Je JWT autentizace?

JWT je formát tokenu. Může nést tvrzení vytvořená po autentizaci, ale sám nevysvětluje, jak byla identita ověřena ani nezaručuje správnou autorizaci.

Je OAuth 2.0 totéž co přihlášení?

Ne nutně. OAuth 2.0 řeší delegované oprávnění. Pro standardní ověření identity se nad ním obvykle používá OpenID Connect.

Stačí silné heslo?

Silné heslo je jen jeden faktor. U citlivých účtů pomáhá MFA, omezení pokusů, bezpečný recovery tok a ochrana následné session.

Jak řeším backend v praxi

Přístup navrhuji od identity až po konkrétní akci nad daty.

V API, e-commerce a interních systémech propojuji ověření identity se správou relací, rolemi a serverovou kontrolou zdrojů.

Zavolejte mi

Zavolám vám následující pracovní den mezi 9:00 a 17:00.

Můžete mi také zavolat rovnou.

+420 605 181 728

Nechte mi telefonní číslo a pošlete žádost o zpětné zavolání.

Odesláním souhlasíte se zpracováním údajů pro vyřízení žádosti.