GNAP: OAuth sljedeća generacija

Godina je bila 2012., a revidirani sigurnosni protokol pod nazivom OAuth 2 preplavio je mrežu, omogućujući korisnicima upotrebu sigurnosnih usluga za jednostavnu prijavu na web stranice. Mnogi sustavi pojedinačne prijave, od AWS-ovog Cognita do Okta, implementiraju OAuth. OAuth je ono što vam omogućuje da se "autentificirate s Googleom" ili drugim pružateljima usluga na potpuno drugom web mjestu ili u aplikaciji.

Djeluje poput festivala piva. Odete do stola i potvrdite identitet sa svojim ID-om (i nešto novca), a oni vam daju žetone. Odatle odlazite do svakog pivskog šatora i mijenjate žeton za pivo. Pojedinačni pivar ne mora provjeriti vašu osobnu iskaznicu niti pitati jeste li platili. Oni samo uzmu žeton i dodaju vam pivo. OAuth djeluje na isti način, ali s web mjestima umjesto piva.

Nažalost, OAuth je najbolji festival piva koji 2020. može ponuditi.

Razgovarao sam s Danom Mooreom iz FusionAuth-a o OAuth-u i predloženoj zamjeni pod nazivom GNAP - koja se bez G-a vjerojatno izgovara kao "nap". Izgovor nastavlja na ideju da je sigurnost zaista uzbudljivo polje. GNAP rješava neka ograničenja OAuth-a i začinjava ga novim značajkama.

Zašto zamijeniti, ili bolje reći povećati, OAuth? OAuth je dizajniran za preglednike. Pretpostavlja se da začetnik koji podnosi zahtjev može obraditi HTTP preusmjeravanje. Ovaj fokus web preglednika kamen je spoticanja za mobilne aplikacije ili bilo koju vrstu "stvari" na "Internetu stvari". Uz to, stranke OAuth-a poput 2007. godine zahtijevaju da umjesto JSON-a objavite parametre obrasca.

Specifikacije OAuth-a bile su ponegdje nejasne, a svijet se promijenio od 2012. Postoji mnoštvo RFC-ova i BCP-ova, u osnovi dodataka, koje morate implementirati za više mogućnosti, bolju sigurnost i opću kompatibilnost. Odvojeni napor nazvan OAuth 2.1 nada se da će neke od ovih dodataka pretvoriti u skladniju pojedinačnu specifikaciju. Za neke motivacije za OAuth 2.1, pogledajte Lee McGovern iz Oktinog posta "Koliko RFC-a je potrebno za promjenu žarulje." OAuth 2.1, za razliku od GNAP-a, samo je inkrementalno izdanje bez novih značajnih promjena, osim kombiniranja niza specifikacija u jednu specifikaciju.

Specifikacija GNAP-a još je u ranoj fazi. Autori GNAP-a planiraju ići dalje od OAuth 2.1 i promijeniti prirodu samog protokola. Umjesto da koristite HTTP parametre, možete koristiti JSON. Krajnje točke aplikacije mogu se otkriti. Ne morate podržavati preusmjeravanja (ili razne hakove oko toga). Moore se na ove promjene odnosi pod divnim pojmom "ergonomija programera".

Ključni cilj GNAP-a je razdvajanje onoga tko traži resurse (RQ) i tko je vlasnik resursa (RO).

IETF

GNAP također predlaže podršku novim sigurnosnim značajkama kao što su:

  • Pokretanje asinkronog i URL-a aplikacije. To su različiti putovi provjere autentičnosti koji omogućuju klijentu provjeru autentičnosti bez preusmjeravanja. GNAP također omogućuje aplikacijama provjeru autentičnosti za resurse treće strane kojima poslužitelj resursa i poslužitelj autorizacije nemaju izravan pristup.
  • Zatraži nastavak. Oni omogućuju klijentima da pregovaraju o stvarima poput preusmjeravanja ili drugih pojedinosti o autentifikaciji tijekom postupka autentifikacije. Omogućuju klijentu da pregovara o dodatnim privilegijama ili pristupnim tokenima.
  • Tokeni višestrukog pristupa. Oni omogućuju klijentima provjeru autentičnosti za više resursa odjednom, na primjer, i kao korisnika i kao administratora.
  • Žetoni ograničenja pošiljatelja. Iako postoje dodaci za OAuth 2 za ovu funkcionalnost koja se naziva DPOP i MTLS, GNAP bi to izravno ugradio u protokol. Vratite se našem primjeru pivskog šatora. Što ako bismo prodavaču također morali šapnuti lozinku na uho dok bismo mu predavali žeton? Da je naš token ispušten (ili presretnut), to ne bi bilo važno jer donositelj ne bi imao lozinku.
  • A GNAP izaziva vrisak duha Kerberos.

Zvuči dobro? Možete li početi koristiti GNAP već danas? Ako ste zainteresirani za suradnju, možete rastaviti jedan od prototipova koji je ušao u postojeći prijedlog na GitHubu.

Prema Mooreu, autori imaju za cilj objaviti GNAP 2022. Budući da je svaki dan u 2020. godini poput tjedna u tipičnoj godini, GNAP je daleko. Međutim, GNAP radna skupina traži suradnike, a vi se možete pridružiti popisu pošte i ponuditi svoje povratne informacije i stručnost. Pretpostavljam da ne možete popraviti sve na svijetu, ali možete barem pomoći popraviti OAuth.