Autorizace OAuth 2.0
OAuth 2.0 je autorizační framework, který se stal de facto standardem pro autorizaci přístupu k chráněným zdrojům. Umožňuje aplikacím třetích stran získat přístup k uživatelským datům bez odhalení přihlašovacích údajů uživatele. Místo sdílení hesel poskytují služby tokeny.
Pozadí
Představte si, že chcete používat aplikaci třetí strany, která potřebuje přístup k datům z vašeho účtu Google. Nechtěli byste této aplikaci poskytnout své uživatelské jméno a heslo Google, že? Zde přichází na řadu OAuth. Umožňuje vám udělit této aplikaci přístup k vašim datům Google bez sdílení vašich přihlašovacích údajů Google.
Základy OAuth 2.0
OAuth 2.0 se zaměřuje na jednoduchost pro klientské vývojáře a zároveň poskytuje specifické autorizační toky pro webové aplikace, desktopové aplikace, mobilní telefony a zařízení v obývacím pokoji. Zde je zjednodušený přehled:
Resource Owner (vlastník zdroje): Uživatel, který autorizuje aplikaci pro přístup ke svému účtu. Přístup aplikace k účtu uživatele je omezen na "scope" (rozsah) uděleného oprávnění (např. čtení nebo zápis konkrétního typu dat).
Client (klient): Aplikace, která chce přistupovat k účtu uživatele. Než tak může učinit, musí být autorizována uživatelem a autorizace musí být validována API.
Resource Server (server zdrojů): Server hostující uživatelské účty. Může přijímat a odpovídat na požadavky na chráněné zdroje pomocí přístupových tokenů.
Authorization Server (autorizační server): Tento server ověřuje identitu uživatele a poté vydává přístupové tokeny pro aplikaci.
Toky OAuth 2.0
Existuje několik "toků" nebo "grant types" pro různé typy aplikací a případy použití:
Authorization Code (pro aplikace běžící na webovém serveru): Jedná se o nejběžnější tok, zejména pro webové aplikace. Zahrnuje přesměrování uživatele na službu, kde se přihlásí. Po přihlášení je přesměrován zpět do aplikace s autorizačním kódem, který aplikace může vyměnit za přístupový token.
Implicit (pro aplikace běžící v prohlížeči): Tento tok je pro aplikace založené na user-agent (např. jednostránkové aplikace), kde je přístupový token vrácen okamžitě bez dalšího kroku výměny autorizačního kódu.
Resource Owner Password Credentials: Tento tok umožňuje aplikaci přímo poskytnout uživatelské jméno a heslo uživatele. Je doporučen pouze pro důvěryhodné aplikace, protože zahrnuje sdílení přihlašovacích údajů uživatele.
Client Credentials: Používá se, když je samotný klient vlastníkem zdroje; například když je klient služba na pozadí.
Tokeny
Místo použití přihlašovacích údajů uživatele používá OAuth 2.0 tokeny. Existují dva typy:
Access Token (přístupový token): Umožňuje aplikaci provádět API požadavky jménem uživatele. Je krátkodobý.
Refresh Token: Může být použit k získání nového přístupového tokenu, pokud původní přístupový token vypršel. Je dlouhodobější než přístupový token.
Bezpečnost
OAuth 2.0 spoléhá na SSL/TLS pro bezpečnost. Zajišťuje důvěrnost dat mezi klientem, autorizačním serverem a serverem zdrojů. I když se útočníkům podaří zachytit přístupový token, nemohou ho použít po jeho expiraci (obvykle krátká doba) nebo mimo rozsah, pro který byl vydán.
Závěr
OAuth 2.0 je výkonný a flexibilní framework, který umožňuje aplikacím třetích stran přistupovat k uživatelským datům bez odhalení přihlašovacích údajů uživatele. Stal se nezbytným nástrojem v moderním webu, poskytujícím uživatelům a vývojářům bezpečný a efektivní prostředek pro udělování a správu oprávnění napříč různými službami a aplikacemi.