Förstå åtkomsttoken, uppfräscha token och ID-token i OpenID Connect (OIDC) protokoll
OpenID Connect (OIDC) protokollet har blivit en allmänt antagen standard för identitetshantering. Men förstår du verkligen rollerna och attributen för dessa token?
OIDC, OAuth 2.0 och token
OpenID Connect Protocol, även känt som OIDC, har blivit en allmänt antagen standard för att tillhandahålla en grundläggande ram för identitetshantering. Det är ett autentiseringslager byggt ovanpå det välkända OAuth 2.0 protokollet. Medan OAuth 2.0 enbart är för resursauktorisation, är OIDC protokollet som standardiserar och förstärker klientautentisering, med hjälp av den nyintroducerade ID-token.
Vänta... Du kanske har hört talas om åtkomsttoken och uppfräscha token i OAuth-eran, och nu kommer det nya konceptet i OIDC? Förstår du verkligen skillnaderna mellan dessa token?
Vad är åtkomsttoken, uppfräscha token och en ID-token i OIDC?
Låt oss börja med ett praktiskt scenario.
Föreställ dig att du utvecklar en typisk klient-server-applikation, och de kommunicerar med varandra via RESTful API:er. Du vill hålla de flesta av dina API:er privata, endast tillåter auktoriserade klienter att få tillgång. Du kommer att behöva en mekanism för att autentisera klienten och auktorisera API-begärandena till din server.
Idealiskt bör dina RESTful API:er vara tillståndslösa, vilket innebär att servern inte bör lagra någon klientsessionsinformation. När en giltig begäran kommer in, bör servern bara svara med den begärda data. Det är här token kommer in i bilden. Så, vilken typ av token ska du använda i ett sådant fall?
Åtkomsttoken används för att skydda dina API:er
I OAuth 2.0 och OIDC, behandlas varje skyddad API som en resurs. Åtkomsttoken är den token som klienten sänder till servern vid begäran av en API-resurs, vanligtvis via begäranshuvudet och i JWT format.
På serversidan, när en begäran kommer in, behöver servern bara validera om inkommande begäran bär en giltig åtkomsttoken. Valideringsprocessen inkluderar vanligtvis att avkoda JWT-token, verifiera signatur och utgångstid, samt omfattningskravet för att säkerställa att klienten har de nödvändiga tillstånden.
Men du kanske funderar: Om min klientapplikation kan ha en giltig åtkomsttoken efter en framgångsrik inloggning, och använda åtkomsttoken för att begära server-API:er, är inte det tillräckligt? Varför behöver jag de andra token?
Frågan är giltig, och låt oss förklara steg för steg.
Varför behöver vi uppfräscha token?
Medan åtkomsttoken tekniskt sett uppfyller de minimikrav som krävs för att systemet ska fungera, så på grund av säkerhetsproblem är åtkomsttokennas giltighet vanligtvis mycket kort (vanligtvis en timme). Så föreställ dig om vi bara har åtkomsttoken, slutanvändarna skulle behöva autentisera om varje gång åtkomsttoken löper ut. För moderna enkel-sides web-applikationer (SPA) och särskilt mobilapplikationer är frekventa utloggningar en ganska smärtsam användarupplevelse, även om vi bara försöker skydda deras användarsäkerhet.
Därför behöver vi en balans mellan tokensäkerhet och användarbekvämlighet. Därför introduceras uppfräscha token.
Varför kan uppfräscha token ha längre livslängd?
Åtkomsttoken används för att få tillgång till API-resurser, så deras kortlivade natur hjälper till att minska risken för att de läcker eller utsätts för intrång. Å andra sidan, eftersom uppfräscha token bara används för att bytas mot nya åtkomsttoken, används de inte lika frekvent som åtkomsttoken och därmed minskar risken för exponering. Därför anses det acceptabelt att ha en längre giltighetstid för uppfräscha token.
Säkerställa uppfräscha tokens säkerhet
Eftersom uppfräscha token också lagras på klientsidan, är det en utmaning att säkerställa att de inte utsätts för kompromettering, särskilt för öppna klienter såsom enkel-sides web-applikationer (SPA) och mobilappar.
I Logto har uppfräscha token en automatisk rotationsmekanism aktiverad som standard, vilket innebär att auktorisationsservern kommer att utfärda en ny uppfräscha token när den uppfyller kriterierna:
- Enkel-sides applikationer: Erkänns som klienter utan avsändarbegränsningar, dessa appar kräver uppfräscha token-rotation. Uppfräschans tokenens livstid (TTL) kan inte specificeras.
- Inhemska appar och traditionella webb-appar: Uppfräscha token-rotation är automatiskt aktiverad, och förnyas automatiskt när 70 % av dess TTL nås. Läs mer om uppfräscha token-rotation i Logto
Även om du fortfarande har möjlighet att stänga av rotation av uppfräscha token på applikationsdetaljsidan i administrationskonsolen, rekommenderas det starkt att behålla denna skyddsåtgärd.
Vad är en ID token och varför är den viktig?
ID-token är en unik funktion i OIDC som ger identitetsinformation om den autentiserade användaren.
Medan åtkomsttoken används för att få tillgång till skyddade resurser och uppfräscha token används för att få nya åtkomsttoken, används ID-token vanligtvis för att cacha användarinformation på klientsidan, vilket minskar behovet av att göra ytterligare begäranden till auktorisationsservern för användardata. I de flesta fall är det till och med säkert att säga att ha ID-token är likvärdigt med att användaren är autentiserad.
Bästa praxis för hantering av token
- Använd HTTPS: Använd alltid HTTPS för att säkra kommunikationen mellan klienten och auktorisationsservern. Detta förhindrar obehöriga parter från att avlyssna och stjäla token.
- Ställ in korrekt token-utgångstid: Åtkomsttoken bör ha en kort livslängd för att minimera risken för exponering. Uppfräscha token kan ha en längre giltighetstid.
- Aktivera rotation av uppfräscha token: Implementera rotation av uppfräscha token för att minska risken för läckage av uppfräscha token.
- Använd finfördelad åtkomstkontroll: Använd finfördelade omfattningar för att begränsa åtkomsttokenens tillstånd. Begär bara de tillstånd som behövs för klientapplikationen. Undvik att använda "all" eller "admin" omfattningar för att kringgå de flesta tillståndskontroller om inte absolut nödvändigt.
Sammanfattning: Viktiga skillnader mellan åtkomsttoken, uppfräscha token och ID-token i OIDC
Inom OIDC-protokollet samarbetar uppfräscha token, åtkomsttoken och ID-token för att tillhandahålla säker och sömlös användarautentisering.
- Åtkomsttoken tillhandahåller auktorisation att få tillgång till skyddade resurser.
- Uppfräscha token eliminerar användarintervention för nya åtkomsttoken.
- ID-token tillhandahåller cachad användarinformation på klienten, vilket förbättrar prestandan.
Att förstå dessa tokens roller och betydelse är avgörande för utvecklare som implementerar OIDC-autentisering i sina applikationer.