Vad är OAuth? ”Logga in med Google” och delegerad åtkomst förklarat
OAuth är en öppen standard som låter en användare ge en app begränsad åtkomst till deras konto på en annan tjänst, utan att lämna över sitt lösenord. När du klickar på ”Anslut Google-kalender” och ser en skärm som frågar ”Tillåt den här appen att se dina händelser?” är det OAuth. Appen får en token för exakt det du godkände, som du kan återkalla när som helst. Samma mekanik, med ett extra lager som kallas OpenID Connect, driver ”Logga in med Google” och liknande knappar.
Varför OAuth spelar roll när du bygger med AI
OAuth dyker upp i två vanliga situationer när du bygger en app:
- Social inloggning. Du vill att dina användare ska ”Logga in med Google” (eller Apple, Microsoft, GitHub) i stället för att skapa ytterligare ett lösenord. Se hur du lägger till inloggning i din app.
- Koppla till användares konton på andra tjänster. Din app behöver läsa en användares kalender, publicera till deras sociala konto, hämta filer från deras molnlagring eller synka deras bokföringsdata.
I båda fallen kan din AI-byggare skriva koden, men vissa steg kan bara du göra: skapa en utvecklarapp hos leverantören, få ett client ID och en client secret, registrera callback-URL:er och, för vissa behörigheter, klara leverantörens granskning. Att förstå hur OAuth fungerar gör dessa steg — och felen de ger — mycket mindre mystiska. För den större bilden av inloggning, se vad autentisering är.
En vardagsliknelse
Tänk på ett hotellnyckelkort. Vid incheckningen bekräftar receptionen vem du är, sedan ger de dig ett kort som öppnar ditt rum och gymmet — inte de andra rummen, inte personalens områden — och som slutar fungera vid utcheckningen. Kortet innehåller inte ditt pass. Om du tappar det spärrar receptionen det och ger ut ett nytt.
- Receptionen är auktoriseringsservern (Googles inloggningssida).
- Din identitetskontroll är att du loggar in på Google.
- Nyckelkortet är åtkomsttoken.
- ”Rummet och gymmet endast” är scopes du godkände.
- Utcheckningen är att token löper ut, eller att du återkallar åtkomsten.
Appen du använder ser aldrig ditt Google-lösenord, bara nyckelkortet.
Hur OAuth fungerar, steg för steg
Det vanligaste flödet för webbappar är authorization code-flödet. Så här går det till när en användare kopplar sin Google-kalender till en schemaläggningsapp:
- Klick. Användaren klickar på ”Anslut Google-kalender”.
- Omdirigering till leverantören. Appen skickar webbläsaren till Google med sitt client ID, de scopes den vill ha (läsa kalenderhändelser) och redirect URI dit Google ska skicka tillbaka användaren.
- Logga in och samtyck. Användaren loggar in på Google (om den inte redan är inloggad) och ser en samtyckesskärm som listar vad appen begär. De klickar på Tillåt.
- Tillbaka med en kod. Google omdirigerar webbläsaren till appens redirect URI med en kortlivad, engångsbar authorization code.
- Byt på servern. Appens server skickar koden, tillsammans med klienthemligheten, direkt till Google och tar emot en åtkomsttoken (och ofta en uppdateringstoken).
- Använd API:et. Servern anropar Google Calendars API med åtkomsttoken och hämtar användarens händelser.
Callbacken i steg 4 ser ut ungefär så här:
https://yourapp.com/auth/google/callback?code=4/0Adeu5B...&state=x7Kq9
Och token-svaret i steg 5 är JSON som:
{
"access_token": "ya29.a0Af...",
"expires_in": 3599,
"refresh_token": "1//0gL...",
"scope": "https://www.googleapis.com/auth/calendar.readonly",
"token_type": "Bearer"
}
Den viktiga designpunkten: tokenbytet sker server-till-server, så klienthemligheten och tokens behöver aldrig passera webbläsaren.
OAuth vs OpenID Connect vs din egen inloggning
| Vad den besvarar | Exempel | |
|---|---|---|
| OAuth 2.0 | ”Vad får den här appen göra på användarens vägnar?” (auktorisering) | Läsa en användares kalender |
| OpenID Connect (OIDC) | ”Vem är den här användaren?” (autentisering), byggt på OAuth | ”Logga in med Google” som returnerar en verifierad e-post |
| Din egen inloggning | ”Är det här rätt lösenord för kontot?” | E-post och lösenord lagrade (hashade) i din databas |
Många appar kombinerar dem: e-post-och-lösenord-inloggning, plus ”Logga in med Google” via OIDC, plus separata OAuth-kopplingar till andra tjänster.
Nyckeltermer
| Term | Betydelse |
|---|---|
| Leverantör / auktoriseringsserver | Tjänsten användaren loggar in hos och ger åtkomst hos — Google, Microsoft, GitHub. |
| Klient | Din app, registrerad hos leverantören. |
| Client ID | Din apps publika identifierare hos leverantören. |
| Client secret | Din apps privata lösenord hos leverantören. Endast på servern. |
| Scope | En specifik behörighet, som ”läs kalender” eller ”se e-postadress”. |
| Samtyckesskärm | Sidan där användaren ser och godkänner de begärda scopes. |
| Redirect URI / callback-URL | Dit leverantören skickar tillbaka användaren. Måste registreras i förväg och matcha exakt. |
| Åtkomsttoken | Kortlivad credential för att anropa API:et. |
| Uppdateringstoken | Längre levande credential för att hämta nya åtkomsttokens. Förvara den som ett lösenord. |
| ID-token | I OIDC, en signerad token som beskriver vem användaren är. |
| PKCE | En extra kontroll (”proof key”) som hindrar att avlyssnade koder används. Rekommenderas för alla klienter. |
| state | Ett slumpmässigt värde som skyddar flödet mot förfalskade förfrågningar. |
Vanliga missuppfattningar
- ”OAuth är ett inloggningssystem.” Vanlig OAuth ger åtkomst; OpenID Connect hanterar identitet. Att använda en bar åtkomsttoken som bevis på vem någon är har orsakat riktiga säkerhetsbuggar.
- ”Appen får mitt lösenord.” Det gör den aldrig. Det är hela poängen.
- ”Att begära fler scopes är ofarligt.” Användare är mer försiktiga med breda förfrågningar, och leverantörer som Google kan kräva en appgranskning för känsliga eller begränsade scopes. Be bara om det du behöver.
- ”Klienthemligheten kan ligga i frontend.” Allt i webbläsarkod är publikt. Håll den i serverhemligheter.
- ”Det fungerar i test, så det fungerar i produktion.” Leverantörer begränsar ofta overifierade appar — till exempel till listade testanvändare — och redirect-URI:n för din live-domän måste registreras separat.
- ”Tokens varar för evigt.” Åtkomsttokens löper ut snabbt, och användare kan återkalla åtkomst. Din app måste hantera båda på ett smidigt sätt.
Vad du ska fråga din AI-byggare
- ”Lägg till ’Logga in med Google’ med OpenID Connect och ett väl underhållet auth-bibliotek — skriv inte OAuth-flödet själv.”
- ”Använd authorization code-flödet med PKCE och kontrollera
state-parametern.” - ”Läs client ID och client secret från miljövariabler på servern.”
- ”Begär bara de scopes vi behöver: skrivskyddad kalenderåtkomst.”
- ”Berätta vilka redirect-URL:er jag behöver registrera i leverantörens konsol, för förhandsvisningen, den publicerade URL:en och min egen domän.”
- ”Lagra uppdateringstokens krypterade i databasen, och hantera utgångna eller återkallade tokens genom att be användaren ansluta igen.”
- ”Låt användare koppla bort integrationen från sin inställningssida.”
OAuth och Mythex
Mythex har ingen inbyggd slutanvändarinloggning för apparna du bygger; dokumentationen beskriver ett eget-verktyg-tillvägagångssätt — du väljer ett auth-bibliotek eller en hostad leverantör, lagrar dess nycklar som projekthemligheter, och agenten skriver koden. Recept för att lägga till autentisering har en startprompt för detta. Du möter också OAuth i Mythex självt: du kan registrera dig med Google, att koppla GitHub för repo-synk använder GitHub OAuth, och AI-klienter som ansluter till Mythex via MCP går genom en OAuth-samtyckessida. För mer, se vad autentisering är och vad tvåfaktorsautentisering är.
Frågor
Vad är OAuth, enkelt uttryckt?
OAuth är ett standardsätt för en användare att låta en app komma åt deras konto på en annan tjänst — till exempel att låta en schemaläggningsapp läsa deras Google-kalender — utan att ge appen deras lösenord. Användaren godkänner specifika behörigheter, och appen får en token den kan använda för just dem.
Är OAuth samma sak som ”Logga in med Google”?
”Logga in med Google” bygger på OAuth 2.0 plus OpenID Connect, ett lager ovanpå OAuth som lägger till ett standardsätt att tala om för appen vem användaren är. OAuth i sig handlar om att bevilja åtkomst; OpenID Connect är det som gör det till en inloggning.
Vad är en OAuth-åtkomsttoken?
En åtkomsttoken är en credential som appen skickar till en tjänsts API för att bevisa att den har fått åtkomst. Den är oftast kortlivad och begränsad till de behörigheter (scopes) användaren godkände. En uppdateringstoken, om den utfärdas, låter appen hämta nya åtkomsttokens utan att fråga användaren igen.
Vad betyder redirect_uri_mismatch?
Det betyder att callback-URL:en din app skickade under inloggningen inte exakt matchar en som är registrerad i leverantörens utvecklarkonsol. Lägg till exakt URL — inklusive https, domän, sökväg och eventuellt avslutande snedstreck — för varje adress din app körs på.
Är OAuth säkert?
OAuth 2.0 används i stor utsträckning och är säkert när det implementeras korrekt: med authorization code-flödet och PKCE, exakta redirect-URL:er, state-parametern, och med klienthemligheten och tokens hållna på servern. De flesta problem beror på genvägar i implementationen, vilket är varför ett väl underhållet bibliotek rekommenderas.