OAuth 2.0 protokol je aktuálně nejlepší standard pro autentizaci. Stručně to funguje takto. Klient naznačí o jaké oprávnění má zájem autorizačnímu serveru (v hlavičce musí mít base64 zakódovaný řetězec složený z přiděleného CLIENT_ID a CLIENT_SECRET, ten mu vrátí autorizační kód na REDIRECT_URI. S tímto kódem si klient vyžádá přístupový token. Token pak použije při každém požadavku na autentizovaný zdroj informací, do headers HTTP requestu přidá Authorization: Bearer (token).
Dá se to používat výborně pro různá API. Potřebuji např. zpřístupnit data klientům, ale nechci aby k nim měl přístup každý. Pouze ten, který bude znát přístupové údaje. Přidělím klientovi unikátní CLIENT_ID a CLIENT_SECRET. Klient si zprovozní na svém serveru příjem autorizačního kódu.
Authorize
První krok. Jestli to správně chápu, autorizace byla vymyšlena tak, aby se klient mohl nejdříve vyjádřit, o jaký přístup (scope) má zájem. Pokud mám pouze scope default, tak mi tento krok připadá zbytečný. Když se dívám na Google API, tak Google má scopes pro každou službu.
Např. Knihy (Books) mají scope „https://www.googleapis.com/auth/books“. Nebo People API má asi 10 různých scopes, např. pro čtení emailové adresy je scope https://www.googleapis.com/auth/user.emails.read.
Token
Ve druhém kroku již mám autorizační kód a žádám o přístupový token (access_token). Token má platnost 3600 sekund (1 hodina).
Resource
Ve třetím kroku již žádám libovolně o data, která jsou součástí přístupu (scope) jednoduše přidáním Authorization do headers u HTTP requestů.