Článek přečtěte do 7 min.

OAuth je autorizační protokol, který poskytuje webům nebo aplikacím třetích stran omezený přístup k informacím uživatele (jako je jeho e-mail nebo fotografie) – bez sdílení jeho přihlašovacích údajů.

Předpokládejme například, že se chcete zaregistrovat do aplikace, která vám pomůže sledovat vaše fitness cíle. Díky síle OAuth můžete mít možnost přihlásit se pomocí svého účtu Google namísto vytvoření nového účtu specifického pro fitness aplikaci. V takovém případě Google aplikaci umožní přístup ke konkrétním údajům, jako je vaše e-mailová adresa a datum narození, aniž by kdy sdílela vaše heslo Google. Výsledkem je, že aplikace získá data, která potřebuje k fungování, zatímco vaše přihlašovací údaje zůstanou v bezpečí.

Tento článek vysvětluje, jak OAuth funguje, poskytuje základní doporučené postupy pro jeho použití, popisuje, jak se protokol OAuth liší od jiných známých protokolů, a nabízí řešení, které doplňuje protokol OAuth pro zvýšení bezpečnosti.

Stručná historie protokolu OAuth

Vývoj OAuth 1.0 začal v roce 2006 s cílem umožnit jednotlivcům používat své přihlašovací údaje OpenID pro přístup k dalším službám. Ukázalo se však, že protokol je obtížně implementovatelný a zranitelný vůči útokům opakovaného přehrávání.

OAuth 2.0, vydaný v roce 2012, poskytuje klíčová vylepšení, včetně:

  • Jednodušší implementace, protože místo kryptografických podpisů používá tokeny.
  • Větší flexibilita pro různé aplikace, protože je navržena tak, aby podporovala více autorizačních toků, včetně autorizačního kódu, implicitních a klientských pověření.
  • Rozšiřitelnost díky zabezpečené správě přístupu k API, která umožňuje vývojářům vytvářet škálovatelné a bezpečné integrace mezi systémy.

V současné době se projednává nová specifikace OAuth. Navrhovaný rámec OAuth 2.1 konsoliduje změny provedené v OAuth 2.0 v letech od jeho vydání, se zvláštním zaměřením na zlepšení zabezpečení a zjednodušení implementace.

OAuth 2.0 zatím zůstává standardním autorizačním rámcem. Používají jej velké společnosti jako Google, Facebook a Microsoft a je to verze, o které se pojednává v tomto dokumentu.

Vysvětlení procesu OAuth

Zde je podrobný přehled kroků v procesu OAuth 2.0:

  1. Uživatel požaduje přístup: Chcete použít aplikaci (řekněme aplikaci na úpravu fotek) a zvolit přihlášení pomocí svého účtu Google.
  2. Uživatel přesměrován na autorizační server: Aplikace vás přesměruje k přihlášení na Google (autorizační server).
  3. Souhlas uživatele: Přihlásíte se do Googlu a zobrazí se obrazovka s dotazem, zda chcete aplikaci povolit přístup k určitým informacím (jako jsou vaše fotografie). Udělujete povolení.
  4. Vydán autorizační kód: Google vrátí aplikaci autorizační kód.
  5. Aplikace požaduje token: Aplikace odešle tento autorizační kód společnosti Google spolu s pověřeními klienta a požádá o přístupový token.
  6. Přístupový token vydán: Google ověří kód a odešle zpět přístupový token.
  7. Přístup ke zdrojům: Aplikace používá token pro přístup k vašim fotkám z Googlu (nikdy však neuvidí vaše heslo Google).

Vysvětlení základních konceptů OAuth 2.0

Nyní se podívejme na následující klíčové koncepty OAuth: role, rozsahy, autorizační kódy a přístupové tokeny a typy grantů.

Role

OAuth 2.0 definuje čtyři hlavní role:

  • Vlastník zdroje — Koncový uživatel, který vlastní data nebo zdroj.
  • Klient — Aplikace, která chce přistupovat ke zdroji jménem vlastníka zdroje.
  • Resource server — Server, který je hostitelem chráněných zdrojů.
  • Autorizační server – Server, který ověřuje vlastníka zdroje a vydává přístupové tokeny klientovi (jako je server Google OAuth 2.0).

Rozsahy

Rozsah je mechanismus pro omezení přístupu aplikace k informacím uživatele. Aplikace požaduje jeden nebo více rozsahů a uživatel je požádán o souhlas se sdílením souvisejících dat.

OAuth 2.0 nedefinuje konkrétní hodnoty pro rozsahy. Závisí spíše na nativní architektuře a specifických potřebách žádající služby. Google například nabízí sadu rozsahů, takže uživatel může udělit přístup ke svému Disku Google, ale ne ke svému obsahu Gmailu, nebo naopak.

Autorizační kódy a přístupové tokeny

Autorizační kód je dočasný kód, který klientská aplikace používá k získání přístupového tokenu.

Tento přístupový token se pak používá k přístupu k informacím na zdrojovém serveru, s jejichž poskytnutím uživatel souhlasil, jako jsou jeho fotografie nebo e-maily.

Typy grantů

Typ udělení je specifický způsob, jakým může klientská aplikace získat přístupový token z autorizačního serveru. OAuth 2.0 definuje několik typů udělení, aby vyhovovaly různým případům použití a bezpečnostním problémům.

Zde jsou ty hlavní:

  • Autorizační kód — Jedná se o typ grantu, o kterém jsme hovořili výše. Je běžně používán veřejnými klienty, jako jsou webové a mobilní aplikace, k výměně autorizačního kódu za přístupový token.
  • Pověření hesla vlastníka zdroje (PKCE) — S tímto typem udělení klientská aplikace přímo vymění uživatelské jméno a heslo uživatele za přístupový token. V souladu s tím se používá, když uživatel důvěřuje klientské aplikaci se svými přihlašovacími údaji, jako v případě aplikací první strany.
  • Pověření klienta – Tento typ udělení, který se používá pro komunikaci mezi stroji, kde není zapojen žádný uživatel, umožňuje klientům vyměňovat si přihlašovací údaje přímo za přístupový token. Kvůli bezpečnostním rizikům se nedoporučuje pro moderní aplikace.
  • Kód zařízení – Tento typ grantu je určen pro zařízení s omezenými vstupními možnostmi, jako jsou chytré televize nebo zařízení internetu věcí. Zařízení zobrazí kód, který uživatel poté zadá na jiném zařízení, aby aplikaci autorizoval k přijetí přístupového tokenu.
  • Obnovovací token – Tento typ grantu umožňuje aplikacím získat nový přístupový token bez nutnosti opětovného ověření uživatele, čímž je zajištěn nepřerušovaný přístup a zároveň minimalizováno zapojení uživatele.
  • Implicitní – Tento typ grantu byl dříve používán klientskými aplikacemi (jako jsou aplikace s jednou stránkou). Přístupový token je však vrácen přímo bez mezilehlého autorizačního kódu, což zvyšuje zranitelnosti zabezpečení, jako je vystavení tokenu v adresách URL prohlížeče. Proto je tento typ grantu nyní z velké části zastaralý.

Osvědčené postupy pro zabezpečení implementací OAuth

Zabezpečení implementace OAuth je klíčové pro ochranu uživatelských dat před neoprávněným přístupem.

Zde je několik doporučených postupů:

Generál

  • Vždy používejte HTTPS. Pokud jsou tokeny přenášeny přes nezabezpečený kanál, mohou být zachyceny útočníky. Použití HTTPS pomáhá předcházet odposlechu a útokům typu man-in-the-middle.
  • Vždy ověřte adresy URL přesměrování. Přísně ověřujte a porovnejte adresy URL přesměrování, abyste zabránili zranitelnostem otevřeného přesměrování, které lze zneužít ke krádeži autorizačních kódů nebo tokenů.
  • Implementujte PKCE. Použijte Proof Key for Code Exchange (PKCE) k ochraně před útoky zachycujícími autorizační kód, zejména ve veřejných klientech, jako jsou mobilní aplikace.
  • Používejte silné ověřování klienta. Ujistěte se, že klienti jsou řádně autentizováni pomocí silných metod, jako jsou tajné klíče klienta nebo vzájemné TLS.
  • Vyhněte se implicitním grantům. U tohoto typu udělení je přístupový token vystaven v adrese URL, takže je náchylnější k zachycení.

Tokeny

  • Omezte rozsah přístupu. Omezení oprávnění tokenů zajišťuje, že aplikace přistupují pouze k datům, které potřebují. Ujistěte se, že jste řádně ověřili rozsah požadavků.
  • Používejte přístupové tokeny s krátkou životností. Používejte krátkodobé přístupové tokeny a pro dlouhodobější přístup použijte udělení obnovovacího tokenu. Tento přístup omezuje dopad kompromitovaného tokenu.
  • Bezpečně ukládejte přístupové tokeny. Tokeny by měly být bezpečně uloženy, aby se zabránilo krádeži a zneužití protivníky.
  • Pravidelně odebírejte tokeny. Pravidelně rušte tokeny, abyste minimalizovali riziko zneužití tokenů, včetně opakovaných útoků, při kterých protivníci znovu používají ukořistěné tokeny.
  • Implementujte ochranu proti padělání požadavků mezi lokalitami (CSRF). Chcete-li zajistit, že požadavky na autorizační server jsou legitimní, použijte tokeny anti-CSRF.

Monitorování a školení

  • Monitorujte a protokolujte aktivitu OAuth. Uchovávejte podrobné protokoly transakcí OAuth a sledujte je, zda nedochází k podezřelé aktivitě, abyste mohli detekovat potenciální bezpečnostní incidenty a reagovat na ně.
  • Vzdělávejte uživatele a vývojáře. Poskytněte uživatelům i vývojářům jasné pokyny a školení o bezpečných postupech OAuth. Zejména vysvětlete, že útočníci vytvářejí falešné zdrojové servery, aby přiměli klienty k odesílání tokenů, a jak se tomuto typu phishingového útoku vyhnout.

OAuth vs. jiné protokoly

Protokol Primární účel Klíčové případy použití
OAuth 2.0 Povolení OAuth je lehký a zaměřený na uživatele, takže je ideální, když aplikace potřebuje přístup k uživatelským datům
OpenID Connect (OIDC) Ověření identity uživatele OIDC se často používá v tandemu s OAuth: OIDC ověřuje uživatele, zatímco OAuth poskytuje autorizaci.
SAML Autentizace a autorizace Jednotné přihlášení (SSO) pro podnikové aplikace prostřednictvím značkovacího jazyka založeného na XML
XACML Řízení přístupu na základě zásad napříč systémy Prosazování zásad v rámci celého podniku

Jak může Netwrix pomoci

Implementace OAuth 2.0 může být náročná. Zajištění funkčnosti napříč platformami a integrace se staršími systémy je technicky složitá a k zajištění integrity a bezpečnosti tokenu jsou zapotřebí pečlivá opatření. Kromě toho musí organizace vyvážit zabezpečení a bezproblémové uživatelské prostředí, aby zajistily přijetí.

Netwrix zjednodušuje přijetí OAuth 2.0 tím, že nabízí nástroje a řešení, která zvyšují zabezpečení, zefektivňují implementaci a zajišťují soulad s osvědčenými postupy. Netwrix Privilege Secure doplňuje OAuth zejména správou a zabezpečením privilegovaných účtů a přístupu, které jsou často součástí systémů využívajících OAuth pro autorizaci.

S Netwrix Privilege Secure můžete:

  • Monitorujte a auditujte aktivitu privilegovaných účtů, abyste zajistili, že systémy založené na OAuth jsou používány zodpovědně.
  • Identifikujte a zmírněte bezpečnostní rizika související s neoprávněným přístupem v aplikacích podporujících OAuth.
  • Zabezpečte přihlašovací údaje a tokeny rozhraní API vynucením nejmenších oprávnění a zajištěním správného řízení přístupu.

Závěr

OAuth 2.0 je základním kamenem moderní kybernetické bezpečnosti, který umožňuje bezpečnou a flexibilní autorizaci pro širokou škálu aplikací. Díky neustálým vylepšením, jako je OAuth 2.1, zůstává rámec relevantní a robustní. Dodržováním osvědčených postupů a využíváním nástrojů, jako jsou ty od Netwrix, mohou organizace maximalizovat výhody OAuth 2.0 a zároveň minimalizovat rizika.

Nejčastější dotazy

Co je ověřování OAuth?

OAuth je standardní otevřený ověřovací protokol používaný k udělení omezeného přístupu webům nebo aplikacím k určitým uživatelským datům v jiné službě, aniž by byly odhaleny přihlašovací údaje uživatele.

Jak OAuth funguje?

Pomocí protokolu OAuth může aplikace třetí strany požadovat přístup k určitým uživatelským datům z jiné služby (zdrojového serveru). Pokud uživatel udělí přístup. zdrojový server vydá aplikaci autorizační kód. Aplikace vymění tento kód za přístupový token, který používá k vyžádání dat uživatele ze serveru zdrojů. To umožňuje aplikaci přistupovat ke konkrétním datům a zároveň zachovat soukromí uživatelů.

Co OAuth poskytuje?

OAuth poskytuje bezpečnou metodu udělování přístupu aplikacím třetích stran k uživatelským datům na jiné platformě bez sdílení jejich hesel.

Co je OAuth 2?

OAuth 2.0 je aktualizovaná verze OAuth. Tam, kde OAuth 1.0 používá složité kryptografické metody, OAuth 2.0 používá k udělení přístupu tokeny. Podporuje různé typy aplikací, jako jsou mobilní a webové aplikace, a umožňuje obnovovat tokeny bez opětovného přihlášení.

Jak funguje OAuth 2?

Zde je příklad základního pracovního postupu OAuth 2.0:

  1. Uživatel požaduje přístup: Chcete použít aplikaci (řekněme aplikaci na úpravu fotek) a zvolit přihlášení pomocí svého účtu Google.
  2. Uživatel přesměrován na autorizační server: Aplikace vás přesměruje k přihlášení na Google (autorizační server).
  3. Souhlas uživatele: Přihlásíte se do Googlu a zobrazí se obrazovka s dotazem, zda chcete aplikaci povolit přístup k určitým informacím (jako jsou vaše fotografie). Udělujete povolení.
  4. Vydán autorizační kód: Google vrátí aplikaci autorizační kód.
  5. Aplikace požaduje token: Aplikace odešle tento autorizační kód společnosti Google spolu s pověřeními klienta a požádá o přístupový token.
  6. Přístupový token vydán: Google ověří kód a odešle zpět přístupový token.
  7. Přístup ke zdrojům: Aplikace používá token pro přístup k vašim fotkám z Googlu (nikdy však neuvidí vaše heslo Google).

Potřebujete více informací? Neváhejte nás kontaktovat.

Zdroj: Netwrix