Programmering

GNAP: OAuth neste generasjon

Året var 2012, og en revidert sikkerhetsprotokoll kalt OAuth 2 feide på nettet, slik at brukerne kunne bruke sikkerhetsleverandører for enkelt å logge på nettsteder. Mange enkeltpåloggingssystemer, fra AWSs Cognito til Okta, implementerer OAuth. OAuth er det som lar deg “autentisere med Google” eller andre leverandører til et helt annet nettsted eller program.

Det fungerer som en ølfestival. Du går til et skrivebord og autentiserer med ID-en din (og litt penger), og de gir deg tokens. Derfra går du til hvert øltelt og bytter et symbol for en øl. Den enkelte brygger trenger ikke å sjekke ID-en din eller spørre om du har betalt. De tar bare token og gir deg en øl. OAuth fungerer på samme måte, men med nettsteder i stedet for øl.

Dessverre er OAuth den beste ølfestivalen 2020 å tilby.

Jeg snakket med Dan Moore fra FusionAuth om OAuth og en foreslått erstatning kalt GNAP - som sannsynligvis blir uttalt uten G som "lur." Uttalen fremmer ideen om at sikkerhet er et veldig spennende felt. GNAP adresserer noen begrensninger av OAuth og krydrer det med nye funksjoner.

Hvorfor erstatte, eller rettere sagt utvide, OAuth? OAuth ble designet rundt nettlesere. Det forutsetter at opphavsmannen som gjør forespørselen, kan håndtere en HTTP-viderekobling. Dette nettleserfokuset er en snublestein for mobilapper eller andre slags "ting" på "Tingenes internett". I tillegg er OAuth-partier som 2007 og krever at du legger ut skjemaparametere i stedet for JSON.

OAuth-spesifikasjonen var vag noen steder, og verden endret seg siden 2012. Det er en rekke RFC-er og BCP-er, i hovedsak tilleggsspesifikasjoner som du må implementere for å få flere muligheter, bedre sikkerhet og generell kompatibilitet. En egen innsats kalt OAuth 2.1 håper å kollapse noen av disse tilleggene til en mer sammenhengende enkelt spesifikasjon. For noen av motivasjonene for OAuth 2.1, se Lee McGovern fra Oktas innlegg "Hvor mange RFC-er tar det å bytte lyspære." OAuth 2.1, i motsetning til GNAP, er bare en inkrementell utgivelse uten nye vesentlige endringer i tillegg til å kombinere spesifikasjonsbunken i en enkelt spesifikasjon.

GNAP-spesifikasjonen er fortsatt i sine tidlige stadier. GNAPs forfattere planlegger å gå lenger enn OAuth 2.1 og endre selve protokollens natur. I stedet for å bruke HTTP-parametere, kan du bruke JSON. Endepunkter for applikasjoner er oppdagelige. Du trenger ikke støtte viderekoblinger (eller de forskjellige hackene rundt det). Moore refererer til disse endringene under det herlige begrepet "utviklerergonomi".

Et sentralt mål for GNAP er separasjonen av hvem som ber om ressursene (RQ) og hvem som eier ressursene (RO).

IETF

GNAP foreslår også å støtte nye sikkerhetsfunksjoner som:

  • Asynkron og URL for applikasjonsstart. Dette er forskjellige autentiseringsstier som gjør det mulig for klienten å autentisere uten omdirigering. GNAP gjør det også mulig for applikasjoner å autentisere til ressurser fra tredjeparter som ressursserveren og autorisasjonsserveren ikke har direkte tilgang til.
  • Be om fortsettelse. Disse lar kundene forhandle om ting som viderekoblinger eller andre autentiseringsdetaljer under autentiseringsprosessen. De tillater også en klient å forhandle om tilleggsrettigheter eller tilgangstokener.
  • Flere tilgangstokener. Disse lar klienter autentisere seg for mange ressurser samtidig, for eksempel som både bruker og administrator.
  • Sender Constraint Tokens. Mens det er tillegg til OAuth 2 for denne funksjonaliteten kalt DPOP og MTLS, vil GNAP bygge dette direkte inn i protokollen. Gå tilbake til vårt øltelteksempel. Hva om vi også måtte hviske et passord i selgerens øre mens vi ga symbolet til dem? Hvis symbolet vårt ble droppet (eller avlyttet), ville det ikke ha noe å si fordi innehaveren ikke hadde passordet.
  • Og GNAP får Kerberos-spøkelsen til å skrike.

Høres bra? Kan du begynne å bruke GNAP i dag? Hvis du er interessert i å samarbeide, kan du forkaste en av prototypene som gikk inn i det eksisterende forslaget på GitHub.

Ifølge Moore har forfatterne som mål å frigjøre GNAP i 2022. Siden hver dag i 2020 er som en uke i et typisk år, er GNAP langt unna. GNAP-arbeidsgruppen leter imidlertid etter samarbeidspartnere, og du kan bli med på e-postlisten og tilby tilbakemelding og ekspertise. Jeg antar at du ikke kan fikse alt i verden, men du kan i det minste hjelpe til med å fikse OAuth.

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