Desktopové a mobilní aplikace jsou zabudované prohlížeče v aplikaci, které pomáhají dokončit celý proces OAuth 2.0
Proces je znázorněn na obrázku
OAuth2.0 web 1) Vrátit authCode na určený Web redirectUri (tento URI je konfigurován vývojářem aplikace) 2) Pro změnu tokenu je potřeba předat clientId a clientSecret k ověření identity klienta (získané aplikační backendovou službou)
S ohledem na výše uvedené dva body, 1) Protože ne webová aplikace přesměrovává detekci URI 2) Protože neexistuje žádná backendová služba, klient Secret není bezpečný Útok, na který se můžeme setkat, je, jak je znázorněno na obrázku níže, může dojít k zlomyslné aplikaci, která zachytí authCode a pošle zprávu AuthorizationServeru o získání tokenu, takže token je získán bez autorizace zákazníka vůči aplikaci, ale k jiné oficiální autorizaci aplikace, čímž se dosahuje účel útoku.
Řešení:
1. Klient vygeneruje náhodný řetězec: code verifier a uloží tento náhodný řetězec code_challenge = transform(code_verifier, [Plain| S256]) Pokud je metoda transformace jednoduchá, pak je code challenge ekvivalentní code verifieru Pokud je transformační metoda S256, pak je kódová výzva rovna hashu Sha256 ověřovatele kódu 2. Přinést výzvu k návrhu na autorizační kód a vysvětlit, jak ji vygenerovat. Tyto dvě jsou vázány na autorizační kód vydaný serverem 3. Po získání autorizačního kódu klient přinese původně generovaný ověřovač kódu při výměně autorizačního kódu za přístupový token. Server vypočítá ověřovač kódu podle metody vázané transformace, porovná vypočítaný výsledek s výzvou vázaného kódu a vydá přístupový token, pokud je konzistentní. |