Svarbūs dalykai, kuriuos turite žinoti apie „OAuth“
OAuth yra tai, ką turi žinoti kiekvienas kūrėjas. Jei kuriate atskirą programą arba trečiosios šalies programą, kuri integruojama su kita HTTP paslauga, turite žinoti, kaip veikia „OAuth“, kad vartotojams suteiktų lengvai naudojamą ir gerai integruotą paslaugą.
Idėja yra leisti kliento programoms ribotą prieigą prie vartotojo informacijos, niekada nesidalijant vartotojo kredencialais ar slaptažodžiu. „OAuth“ sistema yra atsakinga už mainus, kurių reikia, kol programa gauna jūsų informaciją.
Tarkime, kad norite prisiregistruoti naudoti „Dev“.(tai yra puiki vieta kūrėjams keistis idėjomis) jie leidžia jums užsiregistruoti naudodami savo „GitHub“ paskyrą. Kaip tai vyksta? Kaip jie žinotų, kad jums priklauso „GitHub“ paskyra, prie kurios esate prisijungę?
Dar svarbiau, kaip jūs užtikrinate, kad Dev.to neperžengia savo ribų, kai kalbama apie jūsų informaciją, saugomą „GitHub“?
„OAuth“ dalyviai
Mes laikysimės „Atom“ redaktoriaus „GitHub“ papildinio pavyzdžio, kuris leidžia kūrėjams stumti kodą į „GitHub“ tiesiogiai naudojant „Atom“ sąsają. To pavyzdys yra tas, kad „GitHub“ neslepia detalių už scenos ir jūs matote, kas vyksta po gaubtu.
Prieš patekdami į OAutho darbo smulkmenas. Nustatykime etapą, atpažindami visus mainų dalyvius:
- Išteklių savininkas arba vartotojas: Šis vartotojas yra tas, kurio paskyros informaciją reikia pasiekti (skaityti ir (arba) rašyti), kad ji veiktų su programa.
- Klientas: Tai programa, kuri prašo jūsų leidimo pasiekti jūsų informaciją iš kitos paslaugos. Mūsų pavyzdyje „Atom“ redaktorius yra klientas.
- Ištekliai: Ištekliai yra jūsų tikroji informacija, sėdinti serveriuose tam tikroje atokioje vietoje. Tai galima pasiekti per API, jei klientui suteikiami atitinkami leidimai.
- Įgaliojimų serveris: Taip pat sąsaja su API. Šį serverį prižiūri paslaugų teikėjas (mūsų pavyzdyje „GitHub“). Tiek prieigos teisių serveris, tiek išteklių serveris yra vadinami API, nes juos valdo vienas subjektas, šiuo atveju - „GitHub“, ir kliento kūrėjui pateikiami kaip API.
„OAuth“ registracija
Procesas prasideda, kai kuriama kliento programa. Galite kreiptis į išteklių tiekėją ir užsiregistruoti jų kūrėjo portale arba svetainės API skiltyje. Taip pat turėsite pateikti atgalinio adreso URL, kur vartotojas būtų nukreiptas priėmus ar atmetus suteikti programai būtinus leidimus.
Pavyzdžiui, jei einate į „GitHub“ → „Nustatymai“ → „Kūrėjo nustatymai“ ir spustelėkite „Užregistruokite naują programą“. Tai suteiktų jums Kliento ID kurį galima viešai paskelbti ir a Kliento paslaptis kurią kūrėjų organizacija turi laikyti ... paslaptyje.
Kai kliento ID ir paslaptis bus pateikti jums, kūrėjui, jums turi saugokite juos, nes „Authorization“ serveris jų nebebus rodomas. Tas pats pasakytina ir apie visus kitus žetonus, kurie būtų išmesti (Daugiau apie žetonus vėliau).
„OAuth 2“ darbo eiga
Užregistravote savo paraišką. Jis buvo sukurtas ir išbandytas, o dabar vartotojai yra pasirengę jį naudoti. Naujam vartotojui registruojantis jūsų paslaugoje bus rodoma parinktis „Prisijunkite naudodami„ GitHub “. Tai yra pirmasis žingsnis.
1 veiksmas: įgaliojimo užklausa
Patvirtinimo užklausa yra ta dalis, kur atsidaro naujas langas (arba panašus raginimas) su išteklių tinklalapiu ir prašo vartotojų prisijungti. Jei jau esate prisijungę tame įrenginyje, šis veiksmas bus praleistas ir „GitHub“ paprasčiausiai paklaus, ar norite suteikti prieigą prie „Atom“ kliento programos. „Atom“ atveju tai yra daug skaidriau, nes jie prašo rankiniu būdu eiti į „GitHub“ svetainę ir suteikti jiems leidimą.
Apsilankę URL, jūsų paprašoma leidimo.
Atkreipkite dėmesį į URL, kuris rodo, kad tai yra saugus („HTTPS“) „GitHub“ tinklalapis.Inc. Dabar jūs, vartotojas, galite būti tikri, kad tiesiogiai bendraujate su „GitHub“. „Atom“ tiesiog laukia, visai ne savo keliu.
Skirtingai nuo „Atom“, dauguma kliento programų automatiškai įkelia prisijungimo ar leidimų puslapį. Nors tai yra labai patogu, jį taip pat galima netinkamai naudoti, jei kliento programa nusprendžia atidaryti sukčiavimo nuorodą. Norėdami to išvengti, visada turite patikrinti URL, į kurį esate nukreipti, ir įsitikinti, kad jis yra teisingas URL ir naudoja HTTPS protokolą.
2 žingsnis: gauti leidimą
Norėdami pranešti „Atom“ klientui, jums suteikiamas prieigos raktas (įgaliojimo suteikimas), kuris tada pateikiamas „Atom“ klientui.
Kai vartotojas tai padarys, vartotojo darbas bus atliktas. (Tiesą sakant, įprastas vartotojas net nežino apie keitimąsi autorizacijos suteikimu. „GitHub“ pavyzdys buvo pasirinktas siekiant parodyti, kad taip nutinka).
3 žingsnis: Prieigos prieigos rakto gavimas
Autorizacijos suteikimas vis dar nėra subjektas, suteikiantis klientui prieigą prie vartotojo informacijos. Tai gaunama naudojant tai, kas vadinama prieigos žetonu. Kurį kliento programą bandys gauti atlikdamas šį veiksmą.
Norėdami tai padaryti, klientas dabar turės suteikti prieigos teisę serveriui kartu su savo tapatybės įrodymu. Tapatybė patikrinama naudojant kliento ID ir kliento paslaptį, kurie kliento programai buvo suteikti anksčiau.
Tapatybės tikrinimas atliekamas siekiant užtikrinti, kad vartotojas nebūtų apgautas naudoti nenaudingą programą, kuri apsimeta teisėta programa. Pvz., Jei kas nors nusprendžia pavadinti savo vykdomąjį failą kaip „Atom“ tuo pačiu vardu, logotipu ir funkcijomis, vartotojas gali būti apgautas suteikti prieigą klientui, kuris gali netinkamai naudoti jūsų informaciją. Jie gali šnipinėti ar net veikti be jūsų sutikimo. Autorizacijos serveris užtikrina, kad klientas iš tikrųjų yra toks, koks atrodo jo vartotojams.
Patikrinus tapatybę ir priėmus įgaliojimą, autorizacijos serveris meta žetoną kliento programai. Pagalvokite apie prieigos raktą kaip apie vartotojo vardo ir slaptažodžio derinį, kurį galima suteikti išteklių serveriui, norint pasiekti konkretų apsaugotą šaltinį, kurį išteklių savininkas leido jums pasiekti.
Galiausiai, naudodama šį prieigos raktą, programa dabar gali pasiekti reikiamą vartotojo informaciją ir kitus išteklius iš serverio.
Atkreipkite dėmesį, kaip per visą šį keitimąsi tikrasis vartotojo vardas ir slaptažodis, kai niekada nebuvo bendrinami su klientu? Tai ir yra „OAuth“ grožis. Užuot suteikusi vartotojo vardą ir slaptažodžius, kurie suteiktų programai visą prieigą prie šaltinio, ji naudoja žetonus. Žetonas gali gauti tik ribotą prieigą prie šaltinio.
Leidimų atšaukimas
Tarkime, kad prarandate prieigą prie savo įrenginio, kuriame buvo autorizuota kliento programa. Galite anuliuoti „GitHub“ ir eiti į Nustatymai → Programos → Įgaliotos „OAuth“ programos, kad atšauktumėte įgaliojimo suteikimą ir prieigos raktą. Aš darysiu tą patį, nes pirmiau pateiktose ekrano kopijose leidimo suteikimas buvo viešai parodytas.
Dabar, kai iš paukščio skrydžio matote, kaip „OAuth 2“.Čia galite sužinoti daugiau apie įgaliojimų suteikimą ir kitą smulkesnę protokolo informaciją bei tai, kaip atliekami API skambučiai.