Programavimas

GNAP: OAuth nauja karta

Metai buvo 2012 m., O pataisytas saugos protokolas, vadinamas „OAuth 2“, nušlavė internetą ir leido vartotojams naudoti saugos teikėjus, kad galėtų lengvai prisijungti prie svetainių. Daugelis vieno prisijungimo sistemų, pradedant AWS „Cognito“ ir baigiant „Okta“, įgyvendina „OAuth“. „OAuth“ suteikia galimybę „autentifikuotis„ Google “ar kitiems paslaugų teikėjams visiškai kitoje svetainėje ar programoje.

Tai veikia kaip alaus festivalis. Jūs einate į stalą ir patvirtinate savo asmens tapatybę (ir šiek tiek pinigų), ir jie duoda jums žetonus. Iš ten eini į kiekvieną alaus palapinę ir iškeidi žetoną į alų. Individualiam aludariui nereikia tikrinti asmens tapatybės dokumento ar klausti, ar sumokėjote. Jie tiesiog paima žetoną ir paduoda tau alų. „OAuth“ veikia taip pat, bet su svetainėmis, o ne alumi.

Deja, „OAuth“ yra geriausias 2020 m. Alaus festivalis.

Kalbėjau su Danu Moore'u iš „FusionAuth“ apie OAuth ir siūlomą pakaitalą, vadinamą GNAP - kuris, be G, tikriausiai tariamas kaip „nap“. Tarimas skatina mintį, kad saugumas yra tikrai įdomi sritis. GNAP pašalina kai kuriuos „OAuth“ apribojimus ir papildo jį naujomis funkcijomis.

Kodėl reikia pakeisti OAuth, o tiksliau jį papildyti? „OAuth“ buvo sukurta naršyklėse. Manoma, kad užklausą pateikiantis iniciatorius gali tvarkyti HTTP peradresavimą. Šis žiniatinklio naršyklės akcentas yra kliūtis programoms mobiliesiems ar bet kokiems „daiktų interneto“ daiktams. Be to, „OAuth“ šalims patinka 2007 metai ir reikalauja, kad paskelbtumėte formos parametrus, o ne JSON.

„OAuth“ specifikacija kai kuriose vietose buvo neaiški, o pasaulis pasikeitė nuo 2012 m. Yra daugybė RFC ir BCP, iš esmės papildomų specifikacijų, kurias turite įdiegti, kad gautumėte daugiau galimybių, geresnį saugumą ir bendrą suderinamumą. Atskiromis pastangomis, vadinamomis „OAuth 2.1“, tikimasi suburti kai kuriuos iš šių priedų į darnesnę pavienę specifikaciją. Dėl kai kurių „OAuth 2.1“ motyvų žr. Lee McGoverną iš „Okta“ įrašo „Kiek reikia RFC, kad pakeistumėte lemputę“. „OAuth 2.1“, skirtingai nei GNAP, yra tik papildomas leidimas, be jokių naujų reikšmingų pakeitimų, be specifikacijų krūvos sujungimo į vieną specifikaciją.

GNAP specifikacija vis dar yra ankstyvoje stadijoje. GNAP autoriai planuoja eiti toliau nei OAuth 2.1 ir pakeisti paties protokolo pobūdį. Užuot naudoję HTTP parametrus, galite naudoti JSON. Programos galinių taškų galima rasti. Jums nereikia palaikyti peradresavimų (arba įvairių aplinkinių įsilaužimų). Moore'as nurodo šiuos pokyčius puikiu terminu „kūrėjo ergonomika“.

Pagrindinis GNAP tikslas yra atskirti, kas prašo išteklių (RQ) ir kas turi išteklius (RO).

IETF

GNAP taip pat siūlo palaikyti tokias naujas saugos funkcijas kaip:

  • Asinchroninis ir programos URL paleidimas. Tai yra skirtingi autentifikavimo keliai, leidžiantys klientui autentifikuotis be peradresavimo. GNAP taip pat leidžia programoms autentifikuoti trečiųjų šalių išteklius, prie kurių išteklių serveris ir prieigos teisių serveris neturi tiesioginės prieigos.
  • Prašyti tęsti. Tai leidžia klientams derėtis dėl tokių dalykų kaip peradresavimai ar kita autentifikavimo informacija per autentifikavimo procesą. Jie taip pat leidžia klientui derėtis dėl papildomų privilegijų ar prieigos žetonų.
  • Keli prieigos žetonai. Tai leidžia klientams vienu metu patvirtinti daugybę išteklių, pavyzdžiui, kaip vartotoją ir administratorių.
  • Siuntėjo suvaržymo žetonai. Nors prie šios funkcijos yra „OAuth 2“ priedų, vadinamų DPOP ir MTLS, GNAP tai tiesiogiai įtrauks į protokolą. Grįžkime prie mūsų alaus palapinės pavyzdžio. Ką daryti, jei mes taip pat turėtume sušnibždėti slaptažodį į pardavėjo ausį įteikdami jiems žetoną? Jei mūsų žetonas buvo numestas (arba perimtas), tai nebūtų svarbu, nes turėtojas neturėjo slaptažodžio.
  • O GNAP sukelia Kerberos vaiduoklio klyksmą.

Skamba gerai? Ar galite pradėti naudoti GNAP šiandien? Jei jus domina bendradarbiavimas, galite sugadinti vieną iš prototipų, kurie buvo įtraukti į esamą „GitHub“ pasiūlymą.

Pasak Moore'o, autoriai siekia išleisti GNAP 2022 m. Kadangi kiekviena 2020 m. Diena yra tarsi savaitė įprastais metais, GNAP yra toli. Tačiau GNAP darbo grupė ieško bendradarbių, o jūs galite prisijungti prie pašto sąrašo ir pasiūlyti savo atsiliepimų bei žinių. Spėju, kad negali išspręsti visko pasaulyje, bet bent jau gali padėti išspręsti OAuth.