Programiranje

GNAP: OAuth naslednja generacija

Leto je bilo 2012 in revidirani varnostni protokol z imenom OAuth 2 je zajel splet, kar uporabnikom omogoča uporabo varnostnih ponudnikov za enostavno prijavo na spletne strani. Številni sistemi za enotno prijavo, od AWS Cognito do Okta, uporabljajo OAuth. OAuth je tisto, kar vam omogoča, da se z Googlom ali drugimi ponudniki overite na popolnoma drugačno spletno mesto ali aplikacijo.

Deluje kot festival piva. Pojdite na mizo in se overite s svojim osebnim dokumentom (in nekaj denarja), ti pa dajo žetone. Od tam greš do vsakega pivskega šotora in zamenjaš žeton za pivo. Pivovarni ni treba preveriti osebne izkaznice ali vprašati, ali ste plačali. Samo vzamejo žeton in vam izročijo pivo. OAuth deluje na enak način, vendar s spletnimi mesti namesto s pivom.

Na žalost je OAuth najboljši festival piva 2020, ki ga lahko ponudi.

Z Danom Mooreom iz FusionAuth sem govoril o OAuth in predlagani zamenjavi, imenovani GNAP, ki se verjetno brez G imenuje kot "nap". Izgovorjava podpira idejo, da je varnost resnično vznemirljivo področje. GNAP obravnava nekatere omejitve OAuth in ga popestri z novimi funkcijami.

Zakaj zamenjati OAuth ali bolje dodati njega? OAuth je bil zasnovan okrog brskalnikov. Predpostavlja se, da lahko nalogodajalec zahteve opravi preusmeritev HTTP. Ta poudarek spletnega brskalnika je kamen spotike za mobilne aplikacije ali kakršne koli "stvari" na "internetu stvari". Poleg tega stranke OAuth, kot je leto 2007, zahtevajo, da namesto JSON objavite parametre obrazca.

Specifikacije OAuth so bile ponekod nejasne, svet pa se je spremenil od leta 2012. Obstaja ogromno RFC-jev in BCP-jev, v bistvu dodatnih specifikacij, ki jih morate uporabiti za več zmogljivosti, večjo varnost in splošno združljivost. Ločeno prizadevanje, imenovano OAuth 2.1, upa, da bo nekatere od teh dodatkov strnilo v bolj skladne posamezne specifikacije. Za nekaj motivacij za OAuth 2.1 glej Lee McGovern iz Oktine objave "Koliko RFC-jev je potrebno za spremembo žarnice." OAuth 2.1 je za razliko od GNAP le dodatna izdaja brez novih pomembnih sprememb, razen združevanja svežnja specifikacij v eno samo specifikacijo.

Specifikacija GNAP je še vedno v začetni fazi. Avtorji GNAP nameravajo iti dlje od OAuth 2.1 in spremeniti naravo samega protokola. Namesto uporabe parametrov HTTP lahko uporabite JSON. Končne točke aplikacije so odkrite. Ni vam treba podpirati preusmeritev (ali različnih vdorov okoli tega). Moore se na te spremembe sklicuje pod čudovitim izrazom »ergonomija razvijalcev«.

Ključni cilj GNAP je ločiti, kdo zahteva vire (RQ) in kdo je lastnik virov (RO).

IETF

GNAP predlaga tudi podporo novim varnostnim funkcijam, kot so:

  • Zagon asinhronega URL-ja in aplikacije. To so različne poti preverjanja pristnosti, ki omogočajo odjemalcu preverjanje pristnosti brez preusmeritve. GNAP aplikacijam omogoča tudi preverjanje pristnosti za tuje vire, do katerih strežnik virov in strežnik za avtorizacijo nimata neposrednega dostopa.
  • Zahtevaj nadaljevanje. Ti omogočajo strankam, da se med postopkom preverjanja pristnosti pogajajo o stvareh, kot so preusmeritve ali druge podrobnosti preverjanja pristnosti. Omogočajo tudi stranki, da se pogaja za dodatne privilegije ali dostopne žetone.
  • Žetoni z večkratnim dostopom. Te odjemalcem omogočajo avtentikacijo na več virov hkrati, na primer kot uporabnik in skrbnik.
  • Žetoni omejitve pošiljatelja. Čeprav obstajajo dodatki k OAuth 2 za to funkcijo, imenovano DPOP in MTLS, bi GNAP to vgradil neposredno v protokol. Vrnite se na naš primer pivskega šotora. Kaj pa, če bi morali prodajalcu še enkrat prišepniti geslo na uho, ko smo mu predali žeton? Če bi naš žeton spustili (ali prestregli), to ne bi bilo pomembno, ker nosilec ne bi imel gesla.
  • In GNAP povzroči, da duh Kerberosa kriči.

Zveni dobro? Ali lahko danes začnete uporabljati GNAP? Če vas zanima sodelovanje, lahko razstavite enega od prototipov, ki je vključen v obstoječi predlog na GitHub.

Po Mooreu si avtorji prizadevajo za izdajo GNAP leta 2022. Ker je vsak dan leta 2020 kot teden v običajnem letu, je GNAP še daleč. Delovna skupina GNAP pa išče sodelavce, vi pa se lahko pridružite poštnemu seznamu in ponudite svoje povratne informacije in strokovno znanje. Mislim, da ne morete popraviti vsega na svetu, lahko pa vsaj pomagate popraviti OAuth.