Hvad er OAuth?
OAuth er standarden for delegeret adgang: En tjeneste får en begrænset, tilbagekaldelig nøgle til en anden tjeneste, aldrig din adgangskode. Du kender det fra at logge ind med Google og lade en app læse din kalender. Nøglen kaldes token og rækkevidden scope. Til forskel fra SSO giver OAuth adgang, ikke identitet.
OAuth er teknikken bag en af de mest hverdagsagtige ting på nettet: at logge ind med en konto du allerede har eller lade en app hente noget fra en anden tjeneste. Selvom du bruger det hele tiden, er der sjældent nogen der forklarer hvad der faktisk sker. Kernen er enkel og ret genial: at give adgang uden at udlevere adgangskoden. Her er hvordan det fungerer.
Hverdagseksemplet du kender
Du er sikkert stødt på en app der spørger “vil du logge ind med Google?” eller “denne app vil have adgang til din kalender”. Du trykker godkend, og appen kan derefter læse din kalender uden at du nogensinde har givet den din Google-adgangskode.
Det er OAuth i funktion. I stedet for at udlevere adgangskoden, som ville give appen fuld adgang til alt på din konto, giver du den en begrænset, afgrænset adgang til netop det du har godkendt. Appen må læse din kalender, men ikke læse din e-mail, ikke ændre dine indstillinger, intet andet. Og skulle du fortryde, kan du trække adgangen tilbage uden at skulle skifte adgangskode.
Pointen er delegering. Du delegerer en begrænset rettighed til en tjeneste, på dine vegne, uden at give nøglerne til hele kontoen væk. Det er derfor OAuth kaldes standarden for delegeret adgang.
Token: nøglen i stedet for adgangskoden
Hvordan giver man adgang uden adgangskode? Med et token. Når du godkender, får den tjeneste der beder om adgang, et token. Tænk på det som en midlertidig nøgle der beviser at du har givet tilladelse. Tjenesten bruger derefter den nøgle, ikke din adgangskode, hver gang den skal have adgang til det du har godkendt.
Forskellen er afgørende. Et token kan være begrænset i hvad det åbner og kan tilbagekaldes når som helst mens en adgangskode er selve hovednøglen til det hele. Lækker et token, er skaden afgrænset; det åbner kun det lille det fik lov at åbne. Din adgangskode forbliver hemmelig, kendt kun af dig og den tjeneste den hører til.
Scope: hvor meget nøglen åbner
Den anden byggesten er scope, altså rækkevidden. Et scope afgrænser præcis hvad et token må. “Læs kalenderen” er et scope. “Send mails i dit navn” ville være et andet. Når en app beder om adgang, er det scopes den beder om, og det er derfor du nogle gange ser en liste over hvad appen vil have adgang til før du godkender.
Tilsammen sørger token og scope for at en tjeneste får præcis den adgang du har givet den, hverken mere eller mindre. Nøglen (token) åbner kun de døre du har peget på (scope). Det er denne finmaskede kontrol der gør OAuth både sikkert og anvendeligt: Du kan lukke en tjeneste lidt ind uden at åbne hele huset.
Ikke det samme som SSO
OAuth forveksles ofte med single sign-on, SSO, fordi begge dukker op i loginforløb. Men de svarer på forskellige spørgsmål.
OAuth handler om adgang: at give en tjeneste tilladelse til at gøre noget med data hos en anden. SSO handler om identitet: at bevise hvem du er så ét login rækker til flere systemer. Kort sagt giver OAuth adgang, ikke identitet. At de mødes i praksis (nogle gange bygges login oven på OAuth), gør at de bliver blandet sammen, men grundlæggende er det to forskellige ting: Den ene åbner en dør, den anden siger hvem du er.
Én måde at holde dem adskilt på: Når en app beder om at læse din kalender, er det et spørgsmål om adgang, og der passer OAuth. Når du logger ind i et værktøj og virksomhedens login bekræfter at du er dig så du slipper for en separat adgangskode netop der, er det et spørgsmål om identitet, og der hører SSO hjemme. Den samme godkendelsesboks kan godt se ens ud i begge tilfælde, men spørgsmålet bag er forskelligt. Forstår I den forskel, bliver det også lettere at forstå hvad en leverandør egentlig tilbyder når de taler om “log ind med”.
Vi hos Weapp bygger integrationer der bruger OAuth rigtigt så adgang mellem tjenester bliver både sikker og afgrænset. Vil I koble tjenester sammen på en tryg måde? Se vores ydelser eller kontakt os.
Ofte stillede spørgsmål
Hvad står OAuth for, og hvad gør det?
OAuth kommer af open authorization, omtrent åben autorisation. Det er en standard for delegeret adgang: at lade en tjeneste få adgang til en del af en anden tjenestes data på dine vegne uden at du udleverer din adgangskode. Tjenesten får i stedet en begrænset nøgle som kun giver den adgang du har godkendt, og som du kan trække tilbage.
Hvorfor er OAuth sikrere end at udlevere sin adgangskode?
Fordi du aldrig giver adgangskoden fra dig. I stedet for at en app får dit fulde login, og dermed adgang til alt, får den en afgrænset nøgle som kun åbner det du har godkendt, f.eks. at læse din kalender, men ikke sende mails. Nøglen kan desuden tilbagekaldes når som helst uden at du behøver at skifte adgangskode. Adgangen er begrænset og kan tages tilbage.
Hvad er et token og et scope?
Et token er den nøgle tjenesten får i stedet for din adgangskode, et bevis på at du har givet tilladelse. Et scope er afgrænsningen af hvad den nøgle må, altså rækkevidden: læse din kalender, men ikke ændre i den. Tilsammen betyder de at en tjeneste får præcis den adgang du har godkendt, hverken mere eller mindre, og at ingen adgangskode skifter hænder.
Hvad er forskellen på OAuth og SSO?
OAuth handler om adgang: at give en tjeneste tilladelse til at gøre noget med data hos en anden. SSO handler om identitet: at bevise hvem du er så du kan logge ind på flere systemer med ét login. De forveksles ofte fordi de mødes i loginforløb, men grundlæggende giver OAuth adgang mens SSO fastslår identitet. Det er to forskellige spørgsmål.
Møder jeg OAuth i hverdagen?
Hele tiden, oftest uden at tænke over det. Hver gang du logger ind et sted med din Google- eller Facebook-konto eller godkender at en app må læse noget fra en anden tjeneste, er det som regel OAuth i baggrunden. Boksen hvor du ser hvad appen beder om adgang til og trykker godkend, er OAuth i praksis: delegeret, afgrænset adgang som du selv styrer.