Vad är OAuth?

Av Weapp · Uppdaterad

OAuth är standarden för delegerad åtkomst: en tjänst får en begränsad, återkallbar nyckel till en annan tjänst – aldrig ditt lösenord. Du känner igen det från att logga in med Google och låta en app läsa din kalender. Nyckeln kallas token och räckvidden scope. Till skillnad från SSO ger OAuth åtkomst, inte identitet.

OAuth är tekniken bakom en av de mest vardagliga sakerna på nätet: att logga in med ett konto du redan har, eller låta en app hämta något från en annan tjänst. Trots att du använder det hela tiden är det sällan någon förklarar vad som faktiskt händer. Kärnan är enkel och rätt genialisk: att ge åtkomst utan att lämna ifrån sig lösenordet. Här är hur det fungerar.

Vardagsexemplet du känner igen

Du har säkert stött på en app som frågar “vill du logga in med Google?” eller “den här appen vill få åtkomst till din kalender”. Du trycker godkänn, och appen kan sedan läsa din kalender – utan att du någonsin gav den ditt Google-lösenord.

Det är OAuth i arbete. I stället för att lämna ut lösenordet, som skulle ge appen full tillgång till allt i ditt konto, ger du den en begränsad, avgränsad åtkomst till just det du godkänt. Appen får läsa din kalender, men inte läsa din e-post, inte ändra dina inställningar, inte något annat. Och skulle du ändra dig kan du dra tillbaka åtkomsten, utan att behöva byta lösenord.

Poängen är delegering. Du delegerar en begränsad rättighet till en tjänst, för din räkning, utan att ge bort nycklarna till hela kontot. Det är därför OAuth kallas standarden för delegerad åtkomst.

Token: nyckeln i stället för lösenordet

Hur går det till att ge åtkomst utan lösenord? Genom en token. När du godkänner får den begärande tjänsten en token – tänk på den som en tillfällig nyckel som bevisar att du gett tillstånd. Tjänsten använder sedan den nyckeln, inte ditt lösenord, varje gång den behöver komma åt det du godkänt.

Skillnaden är avgörande. En token kan vara begränsad i vad den öppnar och kan återkallas när som helst, medan ett lösenord är själva huvudnyckeln till allt. Läcker en token är skadan avgränsad; den öppnar bara det lilla den fick öppna. Ditt lösenord förblir hemligt, känt bara av dig och den tjänst det hör till.

Scope: hur mycket nyckeln öppnar

Den andra byggstenen är scope, alltså räckvidden. En scope avgränsar exakt vad en token får göra. “Läs kalendern” är en scope. “Skicka mejl i ditt namn” vore en annan. När en app begär åtkomst är det scopes den ber om, och det är därför du ibland ser en lista på vad appen vill komma åt innan du godkänner.

Tillsammans gör token och scope att en tjänst får precis den åtkomst du gett den – varken mer eller mindre. Nyckeln (token) öppnar bara de dörrar du pekat ut (scope). Det är denna finmaskiga kontroll som gör OAuth både säkert och användbart: du kan släppa in en tjänst en liten bit utan att öppna hela huset.

Inte samma sak som SSO

OAuth förväxlas ofta med single sign-on, SSO, eftersom båda dyker upp i inloggningsflöden. Men de svarar på olika frågor.

OAuth handlar om åtkomst: att ge en tjänst tillstånd att göra något med data hos en annan. SSO handlar om identitet: att bevisa vem du är, så att en enda inloggning räcker för flera system. Kort sagt ger OAuth åtkomst, inte identitet. Att de möts i praktiken – ibland byggs inloggning ovanpå OAuth – gör att de blandas ihop, men i grunden är det två skilda saker: den ena öppnar en dörr, den andra säger vem du är.

Ett sätt att hålla isär dem: när en app ber att få läsa din kalender är det ett åtkomstärende, och där passar OAuth. När du loggar in på ett verktyg och företagets inloggning intygar att du är du, så att du slipper ett eget lösenord just där, är det ett identitetsärende, och där hör SSO hemma. Samma godkännanderuta kan råka se likadan ut i bägge fallen, men frågan bakom är olika. Förstår ni den skillnaden blir det också lättare att förstå vad en leverantör egentligen erbjuder när de talar om “logga in med”.

Vi på Weapp bygger integrationer som använder OAuth rätt, så att åtkomst mellan tjänster blir både säker och avgränsad. Vill ni koppla ihop tjänster på ett tryggt sätt? Titta på våra tjänster eller hör av dig.

Vanliga frågor

Vad står OAuth för och vad gör det?

OAuth kommer av open authorization, ungefär öppen behörighet. Det är en standard för delegerad åtkomst: att låta en tjänst få tillgång till en del av en annan tjänsts data för din räkning, utan att du lämnar ifrån dig ditt lösenord. Tjänsten får i stället en begränsad nyckel som bara ger den åtkomst du godkänt, och som du kan dra tillbaka.

Varför är OAuth säkrare än att lämna ut sitt lösenord?

För att du aldrig ger ifrån dig lösenordet. I stället för att en app får din fulla inloggning – och därmed allt – får den en avgränsad nyckel som bara öppnar det du godkänt, till exempel att läsa din kalender men inte skicka mejl. Nyckeln kan dessutom återkallas när som helst utan att du behöver byta lösenord. Åtkomsten är begränsad och återtagbar.

Vad är en token och en scope?

En token är den nyckel tjänsten får i stället för ditt lösenord – ett bevis på att du gett tillstånd. En scope är avgränsningen av vad den nyckeln får göra, alltså räckvidden: läsa din kalender, men inte ändra i den. Tillsammans betyder de att en tjänst får precis den åtkomst du godkänt, varken mer eller mindre, och inget lösenord byter händer.

Vad är skillnaden mellan OAuth och SSO?

OAuth handlar om åtkomst: att ge en tjänst tillstånd att göra något med data hos en annan. SSO handlar om identitet: att bevisa vem du är så att du kan logga in på flera system med en inloggning. De förväxlas ofta eftersom de möts i inloggningsflöden, men i grunden ger OAuth åtkomst, medan SSO fastställer identitet. Det är två olika frågor.

Möter jag OAuth i vardagen?

Ständigt, oftast utan att tänka på det. Varje gång du loggar in någonstans med ditt Google- eller Facebook-konto, eller godkänner att en app får läsa något från en annan tjänst, är det oftast OAuth i bakgrunden. Rutan där du ser vad appen begär åtkomst till och trycker godkänn är OAuth i praktiken – delegerad, avgränsad åtkomst du själv styr.