Hva er OAuth?
OAuth er standarden for delegert tilgang: En tjeneste får en begrenset nøkkel til en annen tjeneste, aldri passordet ditt, og nøkkelen kan trekkes tilbake. Du kjenner det igjen fra å logge inn med Google og la en app lese kalenderen din. Nøkkelen kalles token, og rekkevidden kalles scope. I motsetning til SSO gir OAuth tilgang, ikke identitet.
OAuth er teknologien bak noe av det mest hverdagslige på nettet: å logge inn med en konto du allerede har, eller å la en app hente noe fra en annen tjeneste. Selv om du bruker det hele tiden, er det sjelden noen forklarer hva som faktisk skjer. Kjernen er enkel og ganske genial: å gi tilgang uten å gi fra seg passordet. Slik fungerer det.
Hverdagseksempelet du kjenner igjen
Du har sikkert kommet over en app som spør «vil du logge inn med Google?» eller «denne appen vil ha tilgang til kalenderen din». Du trykker «Godkjenn», og appen kan deretter lese kalenderen din, uten at du noen gang ga den Google-passordet ditt.
Det er OAuth i praksis. I stedet for å gi ut passordet, som ville gi appen full tilgang til alt på kontoen din, gir du den en begrenset, avgrenset tilgang til akkurat det du har godkjent. Appen får lese kalenderen din, men ikke lese e-posten din, ikke endre innstillingene dine, ikke noe annet. Og skulle du ombestemme deg, kan du trekke tilbake tilgangen uten å måtte bytte passord.
Poenget er delegering. Du delegerer en begrenset rettighet til en tjeneste, på dine vegne, uten å gi bort nøklene til hele kontoen. Det er derfor OAuth kalles standarden for delegert tilgang.
Token: nøkkelen i stedet for passordet
Hvordan gir man tilgang uten passord? Gjennom et token. Når du godkjenner, får tjenesten som ba om tilgang, et token. Tenk på det som en midlertidig nøkkel som beviser at du har gitt tillatelse. Tjenesten bruker deretter den nøkkelen, ikke passordet ditt, hver gang den trenger tilgang til det du har godkjent.
Forskjellen er avgjørende. Et token kan være begrenset i hva det åpner, og kan trekkes tilbake når som helst, mens et passord er selve hovednøkkelen til alt. Lekker et token, er skaden avgrenset; det åpner bare det lille det fikk lov til å åpne. Passordet ditt forblir hemmelig, kjent bare av deg og tjenesten det hører til.
Scope: hvor mye nøkkelen åpner
Den andre byggesteinen er scope, altså rekkevidden. Et scope avgrenser nøyaktig hva et token får gjøre. «Les kalenderen» er et scope. «Send e-post i ditt navn» kunne være et annet. Når en app ber om tilgang, er det scopes den ber om, og det er derfor du av og til ser en liste over hva appen vil ha tilgang til før du godkjenner.
Til sammen gjør token og scope at en tjeneste får akkurat den tilgangen du har gitt den, verken mer eller mindre. Nøkkelen (token) åpner bare de dørene du har pekt ut (scope). Det er denne finkornede kontrollen som gjør OAuth både sikkert og nyttig: Du kan slippe en tjeneste et lite stykke inn uten å åpne hele huset.
Ikke det samme som SSO
OAuth forveksles ofte med single sign-on (SSO) fordi begge dukker opp når man logger inn. Men de svarer på forskjellige spørsmål.
OAuth handler om tilgang: å gi en tjeneste tillatelse til å gjøre noe med data hos en annen. SSO handler om identitet: å bevise hvem du er slik at én enkelt innlogging holder for flere systemer. Kort sagt gir OAuth tilgang, ikke identitet. At de møtes i praksis (noen ganger bygges innlogging oppå OAuth), gjør at de blandes sammen, men i bunn og grunn er det to ulike ting: Den ene åpner en dør, den andre sier hvem du er.
En måte å holde dem fra hverandre på: Når en app ber om å få lese kalenderen din, er det et tilgangsspørsmål, og der passer OAuth. Når du logger inn i et verktøy uten eget passord fordi virksomhetens innlogging bekrefter at du er deg, er det et identitetsspørsmål, og der hører SSO hjemme. Den samme godkjenningsboksen kan tilfeldigvis se lik ut i begge tilfeller, men spørsmålet bak er forskjellig. Forstår dere den forskjellen, blir det også lettere å forstå hva en leverandør egentlig tilbyr når det snakkes om «logg inn med».
Vi i Weapp bygger integrasjoner som bruker OAuth riktig slik at tilgangen mellom tjenester blir både sikker og avgrenset. Vil dere koble sammen tjenester på en trygg måte? Se tjenestene våre eller ta kontakt.
Ofte stilte spørsmål
Hva står OAuth for, og hva gjør det?
OAuth kommer av open authorization, omtrent åpen autorisasjon. Det er en standard for delegert tilgang: å la en tjeneste få tilgang til en del av dataene i en annen tjeneste på dine vegne, uten at du gir fra deg passordet ditt. Tjenesten får i stedet en begrenset nøkkel som bare gir den tilgangen du har godkjent, og som du kan trekke tilbake.
Hvorfor er OAuth sikrere enn å gi ut passordet sitt?
Fordi du aldri gir fra deg passordet. I stedet for at en app får hele innloggingen din, og dermed alt, får den en avgrenset nøkkel som bare åpner det du har godkjent, for eksempel å lese kalenderen din, men ikke å sende e-post. Nøkkelen kan dessuten trekkes tilbake når som helst uten at du trenger å bytte passord. Tilgangen er begrenset og kan tas tilbake.
Hva er et token og et scope?
Et token er nøkkelen tjenesten får i stedet for passordet ditt, et bevis på at du har gitt tillatelse. Et scope er avgrensningen av hva den nøkkelen får gjøre, altså rekkevidden: lese kalenderen din, men ikke endre i den. Til sammen betyr de at en tjeneste får akkurat den tilgangen du har godkjent, verken mer eller mindre, og ingen passord skifter hender.
Hva er forskjellen på OAuth og SSO?
OAuth handler om tilgang: å gi en tjeneste tillatelse til å gjøre noe med data hos en annen. SSO handler om identitet: å bevise hvem du er slik at du kan logge inn på flere systemer med én innlogging. De forveksles ofte fordi begge dukker opp når man logger inn, men i bunn og grunn gir OAuth tilgang, mens SSO fastslår identitet. Det er to forskjellige spørsmål.
Møter jeg OAuth i hverdagen?
Hele tiden, som regel uten å tenke over det. Hver gang du logger inn et sted med Google- eller Facebook-kontoen din, eller godkjenner at en app får lese noe fra en annen tjeneste, er det som oftest OAuth i bakgrunnen. Vinduet der du ser hva appen ber om tilgang til og trykker «Godkjenn», er OAuth i praksis: delegert, avgrenset tilgang som du selv styrer.