Co je OAuth? „Přihlásit se přes Google“ a delegovaný přístup
OAuth je otevřený standard, který uživateli umožní dát jedné aplikaci omezený přístup k jeho účtu u jiné služby, aniž by předal své heslo. Když kliknete na „Připojit Google Kalendář“ a uvidíte obrazovku s dotazem „Povolit této aplikaci vidět vaše události?“, je to OAuth. Aplikace dostane token přesně pro to, co jste schválili, a kdykoli můžete přístup odvolat. Stejný mechanismus, s přidanou vrstvou nazvanou OpenID Connect, pohání tlačítka „Přihlásit se přes Google“ a podobná.
Proč je OAuth důležitý při tvorbě s AI
OAuth se při tvorbě aplikace objevuje ve dvou běžných situacích:
- Sociální přihlášení. Chcete, aby se uživatelé mohli „přihlásit přes Google“ (nebo Apple, Microsoft, GitHub) místo vytváření dalšího hesla. Viz jak přidat přihlášení do aplikace.
- Připojení k účtům uživatelů u jiných služeb. Vaše aplikace potřebuje číst kalendář uživatele, publikovat na jeho sociální účet, stahovat soubory z jeho cloudového disku nebo synchronizovat účetní data.
V obou případech vám AI nástroj může napsat kód, ale některé kroky může udělat jen váš: vytvořit vývojářskou aplikaci u poskytovatele, získat client ID a client secret, zaregistrovat callback URL a u některých oprávnění projít kontrolou poskytovatele. Když víte, jak OAuth funguje, jsou tyto kroky a chyby, které vytvářejí, mnohem srozumitelnější. Širší přehled přihlašování najdete v co je autentizace.
Každodenní příměr
Představte si kartu do hotelového pokoje. Při příjezdu recepce ověří, kdo jste, a dá vám kartu, která otevře váš pokoj a fitness, ne ostatní pokoje ani zaměstnanecké prostory, a přestane fungovat při odjezdu. Karta neobsahuje váš pas. Když ji ztratíte, recepce ji zablokuje a vydá novou.
- Recepce je autorizační server (přihlašovací stránka Google).
- Kontrola vaší totožnosti je vaše přihlášení k Google.
- Karta do pokoje je přístupový token.
- „Jen pokoj a fitness“ jsou schválené scopes.
- Odjezd je vypršení tokenu nebo odvolání přístupu.
Aplikace, kterou používáte, nikdy nevidí vaše heslo ke Google, jen kartu.
Jak OAuth funguje krok za krokem
Nejčastější postup pro webové aplikace je authorization code flow. Takto to probíhá, když uživatel připojí svůj Google Kalendář k plánovací aplikaci:
- Kliknutí. Uživatel klikne na „Připojit Google Kalendář“.
- Přesměrování k poskytovateli. Aplikace pošle prohlížeč na Google s client ID, scopes, které chce (čtení událostí v kalendáři), a redirect URI, kam má Google uživatele vrátit.
- Přihlášení a souhlas. Uživatel se přihlásí ke Google (pokud ještě není) a uvidí obrazovku souhlasu se seznamem požadovaných oprávnění. Klikne na Povolit.
- Návrat s kódem. Google přesměruje prohlížeč na redirect URI aplikace s krátkodobým, jednorázovým authorization code.
- Výměna na serveru. Server aplikace pošle tento kód spolu s client secret přímo Google a dostane přístupový token (a často obnovovací token).
- Použití API. Server volá API Google Kalendáře s přístupovým tokenem a získá události uživatele.
Callback v kroku 4 vypadá zhruba takto:
https://yourapp.com/auth/google/callback?code=4/0Adeu5B...&state=x7Kq9
A odpověď s tokeny v kroku 5 je JSON jako tato:
{
"access_token": "ya29.a0Af...",
"expires_in": 3599,
"refresh_token": "1//0gL...",
"scope": "https://www.googleapis.com/auth/calendar.readonly",
"token_type": "Bearer"
}
Důležitá myšlenka návrhu: výměna probíhá mezi servery, takže client secret a tokeny nemusí nikdy projít prohlížečem.
OAuth vs OpenID Connect vs vlastní přihlášení
| Na co odpovídá | Příklad | |
|---|---|---|
| OAuth 2.0 | „Co smí tato aplikace dělat jménem uživatele?“ (autorizace) | Čtení kalendáře uživatele |
| OpenID Connect (OIDC) | „Kdo je tento uživatel?“ (autentizace), postaveno na OAuthu | „Přihlásit se přes Google“ vracející ověřený e-mail |
| Vlastní přihlášení | „Je to správné heslo k tomuto účtu?“ | E-mail a heslo uložené (zahašované) ve vaší databázi |
Mnoho aplikací je kombinuje: přihlášení e-mailem a heslem, plus „Přihlásit se přes Google“ přes OIDC, plus samostatná OAuth připojení k jiným službám.
Klíčové pojmy
| Pojem | Význam |
|---|---|
| Poskytovatel / autorizační server | Služba, ve které se uživatel přihlašuje a uděluje přístup — Google, Microsoft, GitHub. |
| Klient | Vaše aplikace, zaregistrovaná u poskytovatele. |
| Client ID | Veřejný identifikátor vaší aplikace u poskytovatele. |
| Client secret | Soukromé heslo vaší aplikace u poskytovatele. Pouze na serveru. |
| Scope | Konkrétní oprávnění, například „číst kalendář“ nebo „zobrazit e-mailovou adresu“. |
| Obrazovka souhlasu | Stránka, na které uživatel vidí a schvaluje požadované scopes. |
| Redirect URI / callback URL | Kam poskytovatel uživatele vrátí. Musí být předem zaregistrována a přesně se shodovat. |
| Přístupový token | Krátkodobý přihlašovací údaj pro volání API. |
| Obnovovací token | Dlouhodobější přihlašovací údaj pro získání nových přístupových tokenů. Uchovávejte ho jako heslo. |
| ID token | V OIDC podepsaný token popisující, kdo uživatel je. |
| PKCE | Dodatečná kontrola („proof key“), která brání zneužití zachycených kódů. Doporučuje se pro všechny klienty. |
| state | Náhodná hodnota, která chrání tok proti padělaným požadavkům. |
Časté omyly
- „OAuth je přihlašovací systém.“ Samotný OAuth uděluje přístup; identitu řeší OpenID Connect. Použití holého přístupového tokenu jako důkazu, kdo někdo je, už způsobilo skutečné bezpečnostní chyby.
- „Aplikace dostane moje heslo.“ Nikdy. V tom je smysl.
- „Požádat o víc oprávnění je neškodné.“ Uživatelé jsou u širokých požadavků opatrnější a poskytovatelé jako Google mohou u citlivých nebo omezených scopes vyžadovat kontrolu aplikace. Žádejte jen to, co potřebujete.
- „Client secret může být ve frontendu.“ Cokoli v kódu prohlížeče je veřejné. Uchovávejte ho v tajných údajích na serveru.
- „Když to funguje při testování, bude to fungovat i v produkci.“ Poskytovatelé často omezují neověřené aplikace, například na seznam testovacích uživatelů, a redirect URI pro vaši živou doménu se musí registrovat zvlášť.
- „Tokeny platí navždy.“ Přístupové tokeny rychle vyprší a uživatelé mohou přístup odvolat. Vaše aplikace musí zvládnout obojí bez potíží.
Co se zeptat svého AI nástroje
- „Přidej přihlášení přes Google pomocí OpenID Connect s dobře udržovanou autentizační knihovnou — neimplementuj OAuth tok ručně.“
- „Použij authorization code flow s PKCE a zkontroluj parametr
state.“ - „Načítej client ID a client secret z proměnných prostředí na serveru.“
- „Žádej jen potřebné scopes: jen čtení kalendáře.“
- „Vypiš všechny redirect URL, které musím zaregistrovat v konzoli poskytovatele: pro náhled, pro publikovanou URL a pro mou vlastní doménu.“
- „Ukládej obnovovací tokeny šifrovaně v databázi a při vypršelých nebo odvolaných tokenech požádej uživatele, aby se znovu připojil.“
- „Nech uživatele odpojit integraci na stránce jejich nastavení.“
OAuth a Mythex
Mythex nemá vestavěné přihlašování koncových uživatelů pro aplikace, které vytvoříte. Jeho dokumentace popisuje přístup „přineste si vlastní“: vyberete si autentizační knihovnu nebo hostovanou službu, její klíče uložíte jako tajné údaje projektu a agent napíše kód. Recept na přidání autentizace obsahuje výchozí prompt. S OAuthem se setkáte i v samotném Mythexu: přihlásit se můžete přes Google, připojení GitHubu pro synchronizaci repozitáře používá GitHub OAuth a AI klienti, kteří se k Mythexu připojují přes MCP, procházejí stránkou souhlasu OAuthu. Více najdete v co je autentizace a co je dvoufaktorové ověření.
Otázky
Co je OAuth jednoduše řečeno?
OAuth je standardní způsob, jak uživatel umožní jedné aplikaci přístup k jeho účtu v jiné službě, třeba aby plánovací aplikace četla jeho Google Kalendář, aniž by jí předal heslo. Uživatel schválí konkrétní oprávnění a aplikace dostane token, který smí použít jen pro ně.
Je OAuth totéž jako „Přihlásit se přes Google“?
„Přihlásit se přes Google“ je postaveno na OAuth 2.0 a OpenID Connect, což je vrstva nad OAuthem, která přidává standardní způsob, jak aplikaci sdělit, kdo uživatel je. OAuth sám o sobě řeší udělení přístupu; OpenID Connect z něj dělá přihlášení.
Co je přístupový token OAuth?
Přístupový token je přihlašovací údaj, který aplikace posílá API služby na důkaz, že jí byl udělen přístup. Obvykle má krátkou platnost a je omezen na oprávnění (scopes), která uživatel schválil. Obnovovací token (refresh token), pokud je vydán, umožní aplikaci získat nové přístupové tokeny bez dalšího dotazu na uživatele.
Co znamená redirect_uri_mismatch?
Znamená to, že callback URL, kterou vaše aplikace poslala při přihlašování, se přesně neshoduje s žádnou URL registrovanou v konzoli poskytovatele. Přidejte přesnou URL, včetně https, domény, cesty a případného koncového lomítka, pro každou adresu, na které aplikace běží.
Je OAuth bezpečný?
OAuth 2.0 je široce používaný a bezpečný, když se implementuje správně: používáním authorization code flow s PKCE, přesnými přesměrovacími URL, parametrem state a uchováváním client secret a tokenů na serveru. Většina problémů vzniká zkratkami v implementaci, proto se doporučuje používat dobře udržovanou knihovnu.