Darbalaukio ir mobiliųjų įrenginių programos yra įterptos naršyklės, padedančios užbaigti visą OAuth 2.0 procesą
Procesas parodytas paveikslėlyje
OAuth2.0 žiniatinklis 1) Grąžinkite autentifikavimo kodą į nurodytą Web redirectUri (šį URI sukonfigūruoja programos kūrėjas) 2) Norėdami pakeisti atpažinimo ženklą, turite perduoti clientId ir clientSecret, kad patvirtintumėte kliento tapatybę (gautą naudojant programos vidinę paslaugą)
Atkreipdamos dėmesį į pirmiau minėtus du dalykus, 1) Nes ne žiniatinklio programos redirectUri aptikimas netinkamas 2) Kadangi nėra backend paslaugos clientSecret nėra saugus Tada ataka, su kuria galime susidurti, yra tokia, kaip parodyta paveikslėlyje žemiau, gali būti kenkėjiška programa, perimanti autentifikavimo kodą, kad išsiųstų pranešimą į "AuthorizationServer", kad gautų prieigos raktą, kad atpažinimo ženklas būtų gautas be kliento leidimo programai, o kitai oficialiai programai, siekiant atakos tikslo.
Sprendimas:
1. Klientas sugeneruoja atsitiktinę eilutę: kodo tikrintuvą ir išsaugo šią atsitiktinę eilutę code_challenge = transform(code_verifier, [Paprastas| S256]) Jei transformacijos metodas yra paprastas, kodo iššūkis yra lygiavertis kodo tikrintojui Jei transformacijos metodas yra S256, tada kodo iššūkis yra lygus kodo tikrintuvo Sha256 maišai 2. Pateikite kodo iššūkį autorizacijos kodo užklausai ir kaip sugeneruoti kodo iššūkį. Šie du yra susieti su serverio išduotu autorizacijos kodu 3. Gavęs autorizacijos kodą, klientas, keisdamas autorizacijos kodą į prieigos raktą, atsineša iš pradžių sugeneruotą kodo tikrintuvą. Serveris apskaičiuoja kodo tikrintuvą pagal susietos transformacijos metodą, palygina apskaičiuotą rezultatą su susieto kodo iššūkiu ir išduoda prieigos raktą, jei jis yra nuoseklus. |