OAuth 2.0 (OAuth2, OAuth)
Ett standardiserat sätt att ge ett program begränsad åtkomst till något hos en annan tjänst, utan att lämna ut sitt lösenord.
- Kategori
- Säkerhet
OAuth 2.0, OAuth2, OAuth
Enkel förklaring
Tänk dig att du vill låta en hantverkare komma in i ditt förråd. Du lånar inte ut hela nyckelknippan, utan ger hen en tillfällig nyckel som bara passar förrådsdörren.
OAuth 2.0 fungerar på samma sätt för program. I stället för att ge ett program ditt lösenord godkänner du att det får en begränsad behörighet, och programmet får en token, en digital nyckel som bara ger just den åtkomsten.
Teknisk förklaring
OAuth 2.0 är en standard (RFC 6749) med fyra roller:
- resursägaren: du, som äger uppgifterna
- klienten: programmet som vill få åtkomst
- auktoriseringsservern: tjänsten som frågar dig och lämnar ut token
- resursservern: tjänsten som har uppgifterna
Klienten får en åtkomsttoken med ett visst omfång (scope), ofta med begränsad giltighetstid. Den aktuella säkerhetsrekommendationen för OAuth 2.0 (RFC 9700) anger flödet authorization code med PKCE, ett extra skydd mot att någon snappar upp koden.
OpenID Connect (OIDC) är ett lager ovanpå OAuth 2.0 som lägger till vem du är, med en ID-token. Förenklat: OAuth 2.0 ger åtkomst, och OIDC ger inloggning.
Praktiskt exempel
Kodkollektivets chatt har ingen egen inloggning. När du loggar in skickas du till Forgejo, Kodkollektivets gemensamma konto, och loggar in där. Chatten får sedan veta vem du är genom OpenID Connect. Chatten får aldrig se ditt lösenord.
När och varför används det?
OAuth 2.0 används när ett program ska få åtkomst till uppgifter hos en annan tjänst, och tillsammans med OIDC när många tjänster ska dela samma inloggning (single sign-on). Du behöver bara ett lösenord, och behörigheten kan dras in utan att lösenordet byts.
Rekommendation: be om så litet omfång som möjligt, och använd flödet med PKCE.
Vanliga missförstånd
- “OAuth 2.0 är ett inloggningsprotokoll.” Inte i sig. Det handlar om åtkomst. Inloggning sköts av OpenID Connect, som bygger på OAuth 2.0.
- “Att ge åtkomst är som att ge bort lösenordet.” Nej. Åtkomsten är begränsad och kan dras in, och lösenordet lämnas aldrig ut.
- “En token är ofarlig.” Nej. En åtkomsttoken fungerar som ett lösenord för det den ger åtkomst till och ska skyddas på samma sätt.