Programmēšana

GNAP: OAuth nākamā paaudze

Gads bija 2012. gads, un pārskatīts drošības protokols ar nosaukumu OAuth 2 slaucīja tīmekli, ļaujot lietotājiem izmantot drošības nodrošinātājus, lai ērti pieteiktos vietnēs. Daudzas vienreizējas pierakstīšanās sistēmas, sākot no AWS Cognito līdz Okta, ievieš OAuth. OAuth ir tas, kas ļauj “autentificēties ar Google” vai citiem pakalpojumu sniedzējiem pilnīgi citā vietnē vai lietojumprogrammā.

Tas darbojas kā alus svētki. Jūs dodaties pie rakstāmgalda un autentificējaties ar savu personu apliecinošu dokumentu (un nedaudz naudas), un viņi jums piešķir žetonus. No turienes jūs dodaties uz katru alus telti un nomaināt žetonu pret alu. Atsevišķam alus darītājam nav jāpārbauda jūsu personas apliecība vai jājautā, vai esat samaksājis. Viņi vienkārši paņem žetonu un pasniedz jums alu. OAuth darbojas tāpat, bet ar vietnēm, nevis alu.

Diemžēl OAuth ir labākais alus festivāls, ko var piedāvāt 2020. gads.

Es runāju ar Danu Mūru no FusionAuth par OAuth un piedāvāto aizstājēju, ko sauc par GNAP - kas, iespējams, bez G tiek izrunāts kā “nap”. Izruna veicina domu, ka drošība ir patiešām aizraujoša joma. GNAP novērš dažus OAuth ierobežojumus un papildina to ar jaunām funkcijām.

Kāpēc aizstāt vai drīzāk papildināt OAuth? OAuth tika izstrādāts, izmantojot pārlūkprogrammas. Tiek pieņemts, ka iniciators, kas iesniedz pieprasījumu, var apstrādāt HTTP novirzīšanu. Šī tīmekļa pārlūkprogrammas uzmanība ir klupšanas akmens mobilajām lietotnēm vai jebkāda veida “lietām” “lietiskajā internetā”. Turklāt OAuth pusēm, piemēram, tas ir 2007. gads, ir nepieciešams, lai JSON vietā izliktu veidlapas parametrus.

OAuth specifikācija dažās vietās bija neskaidra, un pasaule mainījās kopš 2012. gada. Ir daudz RFC un BCP, būtībā papildinājumu specifikācijas, kas jums jāievieš, lai iegūtu vairāk iespēju, labāku drošību un vispārēju savietojamību. Atsevišķi centieni, ko sauc par OAuth 2.1, cer sabojāt dažus no šiem papildinājumiem saskaņotākā atsevišķā spec. Dažus OAuth 2.1 motivācijas iemeslus skatiet Lee McGovern no Okta ziņojuma “Cik daudz RFC ir nepieciešams, lai nomainītu spuldzi”. OAuth 2.1, atšķirībā no GNAP, ir tikai papildu laidiens bez jaunām būtiskām izmaiņām, papildus specifikāciju kaudzes apvienošanai vienā specifikācijā.

GNAP specifikācija joprojām ir agrīnā stadijā. GNAP autori plāno iet tālāk par OAuth 2.1 un mainīt paša protokola raksturu. Tā vietā, lai izmantotu HTTP parametrus, varat izmantot JSON. Lietojumprogrammas galapunkti ir atrodami. Jums nav jāatbalsta novirzīšana (vai dažādi aplauzumi ap to). Mūrs atsaucas uz šīm izmaiņām apburošajā apzīmējumā “izstrādātāja ergonomika”.

Galvenais GNAP mērķis ir nošķirt, kurš pieprasa resursus (RQ) un kam pieder resursi (RO).

IETF

GNAP arī ierosina atbalstīt tādas jaunas drošības funkcijas kā:

  • Asinhronā un lietojumprogrammas URL palaišana. Tie ir dažādi autentifikācijas ceļi, kas ļauj klientam autentificēties bez novirzīšanas. GNAP arī ļauj lietojumprogrammām autentificēties trešo pušu resursiem, kuriem resursu serverim un autorizācijas serverim nav tiešas piekļuves.
  • Pieprasīt turpinājumus. Tie ļauj klientiem autentifikācijas procesa laikā vienoties par tādām lietām kā novirzīšana vai cita autentifikācijas informācija. Tie arī ļauj klientam vest sarunas par papildu privilēģijām vai piekļuves pilnvarām.
  • Vairākas piekļuves žetoni. Tie ļauj klientiem vienlaikus autentificēties daudziem resursiem, piemēram, gan kā lietotājs, gan kā administrators.
  • Sūtītāja ierobežojuma žetoni. Lai gan šai funkcionalitātei OAuth 2 ir pievienojumprogrammas, ko sauc par DPOP un MTLS, GNAP to iebūvētu tieši protokolā. Atgriezieties pie mūsu alus telts piemēra. Kā būtu, ja mums arī būtu jāčukst pārdevēja ausī parole, pasniedzot viņiem žetonu? Ja mūsu žetons tiktu nomests (vai pārtverts), tam nebūtu nozīmes, jo nesējam nebūtu paroles.
  • Un GNAP liek Kerberosas spokam kliegt.

Izklausās labi? Vai jūs varat sākt izmantot GNAP šodien? Ja jūs interesē sadarbība, varat izveidot vienu no prototipiem, kas iekļauti esošajā GitHub priekšlikumā.

Pēc Mūra sacītā, autoru mērķis ir atbrīvot GNAP 2022. gadā. Tā kā katra 2020. gada diena ir kā nedēļa tipiskā gadā, GNAP ir tālu. Tomēr GNAP darba grupa meklē līdzstrādniekus, un jūs varat pievienoties pasta sarakstam un piedāvāt atsauksmes un zināšanas. Es domāju, ka jūs nevarat labot visu pasaulē, bet jūs vismaz varat palīdzēt novērst OAuth.

$config[zx-auto] not found$config[zx-overlay] not found