Typ udělení Implicit v OAuth 2.0
Typ udělení Implicit, známý také jako metoda "token", byl primárně navržen pro aplikace na straně klienta, kde klient nemůže bezpečně uložit client secret. Takové aplikace zahrnují jednostránkové aplikace (SPA) nebo jiné aplikace založené na prohlížeči. Místo přijetí autorizačního kódu, který je třeba vyměnit za přístupový token, aplikace získá přístupový token přímo.
Jak funguje typ udělení Implicit?
- Přesměrování:
- Klientská aplikace přesměruje uživatele na autorizační endpoint autorizačního serveru OAuth 2.0. Toto přesměrování obvykle obsahuje parametry dotazu jako
client_id,response_type(nastavený na "token" pro Implicit Grant),redirect_uri(kam autorizační server přesměruje po udělení/zamítnutí přístupu) ascope(označující požadovanou úroveň přístupu).
- Autentizace uživatele:
- Uživatel se přihlásí na autorizační server (pokud ještě není přihlášen) a zkontroluje požadavek na přístup od klientské aplikace.
- Vydání přístupového tokenu:
- Pokud uživatel udělí přístup, autorizační server ho přesměruje zpět do klientské aplikace prostřednictvím poskytnuté
redirect_uri. URI přesměrování obsahuje přístupový token (a jeho expiraci) přímo ve fragmentové části URL.
- Přístup k chráněnému zdroji:
- Klientská aplikace extrahuje přístupový token z fragmentu URL a uloží ho (např. do local storage nebo session). Poté tento token používá k odesílání požadavků na server zdrojů (API) jménem uživatele.
Jak nakonfigurovat typ udělení Implicit?
- Registrace vaší aplikace:
- Začněte registrací vaší aplikace u poskytovatele OAuth 2.0. Po úspěšné registraci obvykle obdržíte
client_id.
- Nastavení Redirect URI:
- Při registraci uveďte
redirect_uri. Autorizační server přesměruje uživatele na tuto URI poté, co se rozhodnou udělit nebo zamítnout přístup. Zajistěte, aby tato URI byla bezpečná (typicky pomocí HTTPS) a mohla zpracovat extrakci tokenu z fragmentu URL.
- Zahájení OAuth toku:
- Přesměrujte uživatele na autorizační endpoint autorizačního serveru s nezbytnými parametry. Použijte knihovny nebo SDK vhodné pro jazyk nebo framework vaší aplikace.
- Extrakce a uložení tokenu:
- Po přesměrování zpět extrahujte přístupový token z fragmentu URL. Token bezpečně uložte s ohledem na možnosti úložiště na straně klienta, jako je Web Storage (localStorage nebo sessionStorage) nebo cookies. Zajistěte jeho ochranu před útoky cross-site scripting (XSS).
- Použití tokenu:
- Připojte přístupový token k API požadavkům odesílaným na server zdrojů.
- Zpracování expirace tokenu:
- Protože Implicit Grant obvykle neposkytuje refresh tokeny, po vypršení přístupového tokenu může být nutné znovu zahájit OAuth tok pro získání nového.
Důležité aspekty:
Bezpečnost: Typ udělení Implicit je považován za méně bezpečný než typ udělení Authorization Code, zejména proto, že přístupový token je vystaven v URL. To může být riziko v prostředích, kde mohou být URL logovány nebo přístupné třetím stranám.
Žádný Refresh Token: Typ udělení Implicit obvykle neposkytuje refresh tokeny. Proto po vypršení přístupového tokenu může být nutné zopakovat celý tok.
Zastarávání: Kvůli inherentním bezpečnostním obavám dokument OAuth 2.0 Security Best Current Practice doporučuje vyhýbat se typu udělení Implicit ve prospěch Authorization Code s PKCE (Proof Key for Code Exchange) pro veřejné klienty, jako jsou SPA.
Závěr:
I když typ udělení Implicit nabízí jednodušší tok pro aplikace na straně klienta, jeho bezpečnostní obavy vedly k doporučením proti jeho použití v moderních aplikacích. Pokud vytváříte nové aplikace, zejména SPA, zvažte použití typu udělení Authorization Code s PKCE pro bezpečnější přístup.