Autentizace a autorizace
Také známo jako AuthN vs AuthZ, Login a oprávnění
Stručně
Autentizace dokazuje, kdo jste; autorizace rozhoduje, co smíte — a obě se musí kontrolovat na serveru.
Autentizace je přihlášení: heslo, session cookie nebo token prokáže, že jste Radek. Autorizace je otázka hned po ní: smí Radek vidět tuhle fakturu? Dva samostatné problémy s odlišnými chybami — a jejich záměna vede ke klasické chybě, kdy přihlášený uživatel otevře cizí objednávku.
Session a tokeny jsou jen volba úložiště
Session žije na serveru, prohlížeč drží jen cookie s identifikátorem. Odhlášení je okamžité a odebrání práv triviální, proto je to pro webovou aplikaci skvělé výchozí řešení. Token žije u klienta a obvykle nese informace o sobě — ideální pro mobilní aplikace a víc služeb, ale hůř se ruší.
OAuth v jedné větě: uživatel se přihlásí u poskytovatele a vaše aplikace dostane token, který říká, kdo je a jaké scopes smí použít, aniž by kdy viděla heslo. „Přihlásit přes Google“ je OAuth plus identita uživatele; oprávnění k vašim datům ale neřeší.
Kontrola oprávnění patří na server
Skryté tlačítko Smazat je zlepšení zážitku, ne zabezpečení. Vaše API může zavolat kdokoli příkazem cURL a jediná kontrola, která se počítá, běží před dotazem — ideálně přímo v něm, omezená na přihlášeného uživatele, aby zapomenutý return nevyzradil cizí řádky.
Oprávnění kontrolujte u každého požadavku, včetně těch od AI agenta nebo z background jobu. Klasické opomenutí: endpoint pro PDF faktury ověří, že je uživatel přihlášený, a pak načte /invoices/:id bez kontroly vlastnictví. Sekvenční id z toho udělají procházku cizími fakturami.
Co vyřešit hned na začátku
Role přicházejí později a nikdy nejsou tak jednoduché jako admin/zákazník. Po roce přijde zákazník s „malou úpravou“ — účetní, která vidí faktury, ale jen za svou pobočku — a boolean isAdmin se přes noc změní na tabulku oprávnění. Navrhněte role a scopes od začátku, i když začnete se dvěma.
Upřímný kompromis: vlastní autentizace znamená vlastnit reset hesla, ověření e-mailu, 2FA, rotaci tokenů i ochranu před zjišťováním existujících účtů. Většině produktů spravovaná služba ušetří týdny a peníze pak jdou do funkce, kterou nikdo jiný neumí okopírovat.
Zdroje
Související pojmy
Rate limiting
Omezení počtu požadavků na uživatele nebo IP za minutu — nejlevnější ochrana před zneužitím a utrženým účtem za AI.
Supabase
Open-source alternativa k Firebase nad Postgresem: auth, storage, realtime a row-level security na jednom místě.
Prompt injection
Skryté pokyny v obsahu, který model čte — e-mail, web, tiket — takže model nevědomky poslechne útočníka.