Vad är förnyelse av tokenrotation och varför är det viktigt?
Låt oss diskutera varför förnyelse av tokenrotation är ett effektivt sätt att skydda säkerheten för dina förnyelse-token.
Vad är en förnyelse-token?
Förnyelse-token är en speciell typ av token som används för att erhålla en ny åtkomst-token när den nuvarande åtkomst-token löper ut. Kolla in vårt tidigare inlägg Förstå tokens i OIDC för att lära dig mer.
Under introduktionen nämnde vi också att i Logto, för att skydda säkerheten för din förnyelse-token, har vi infört en "förnyelse av tokenrotation"-mekanism som standard.
Men vad är exakt "förnyelse av tokenrotation"? Hur gynnar det våra slutanvändare? Låt oss dyka in!
Vad är förnyelse av tokenrotation?
Förnyelse av tokenrotation är en mekanism som ogiltigförklarar den tidigare förnyelse-tokenen och utfärdar en ny när förnyelse-tokenen används för att erhålla en ny åtkomst-token. Denna mekanism säkerställer att förnyelse-tokenen förnyas innan den löper ut.
Varför behöver vi förnyelse av tokenrotation?
Förnyelse-token har en lång livslängd, vanligtvis i veckor eller till och med månader. Eftersom vi kan erhålla nya åtkomst-token genom förnyelse-token blir förnyelse-tokenen också ett attraktivt mål för angripare. Därför, enligt OAuth 2.0 BCP, måste auktoriseringsservern vidta en av följande åtgärder för att förhindra sådana attacker.
- Utfärda sändarbegränsade förnyelse-token: klienten signerar och förser en signatur (
Sec-Token-Binding
) i förnyelseförfrågans rubrik, så den utfärdade förnyelse-tokenen är kryptografiskt bunden till en specifik klient. Men endast några av de inhemska klienterna är nuförtiden sändarbegränsade, och de flesta av de moderna SPA:erna och mobila klienterna är offentliga. - Förnyelse av tokenrotation: auktoriseringsservern utfärdar en ny förnyelse-token (vanligtvis när man byter ut en ny åtkomst-token) och ogiltigförklarar den tidigare. Detta minskar risken för en tokenläcka.
Bästa praxis för att implementera förnyelse av tokenrotation
I Logto, när en användare lyckats logga in, skapas ett Grant
-objekt först i databasen och den därefter utfärdade förnyelse-tokenen kommer att ha en referens grantId
och pekar på det allra första Grant-objektet.
När en förnyelse av tokenrotation sker kommer den tidigare förnyelse-tokenen att markeras som förbrukad, och Logtos auktoriseringsserver utfärdar en ny förnyelse-token med samma grantId
.
Låt oss anta att den tidigare förnyelse-tokenen läckt ut, då skulle antingen den legitima klienten eller angriparen ha använt den för att byta ut en åtkomst-token. Och oavsett vem som gjorde det, måste den läckta förnyelse-tokenen ha roterats och redan markerats som förbrukad. En av dem som använde den förbrukade förnyelse-tokenen andra gången kommer informera auktoriseringsservern om intrånget. Auktoriseringsservern kommer att återkalla alla förnyelse-token med samma grantId
.
I fallet ovan, efter att ha utlösts larmet, kan den legitima klienten endast re-autentisera genom inloggningsflödet igen för att erhålla en ny förnyelse-token. Angriparen, å andra sidan, kommer förlora kontrollen över ditt system och blockeras utanför.
När sker förnyelse av tokenrotation?
I Logto definieras standardbeteendet för en förnyelse av tokenrotation:
- Om klienten är sändarbegränsad eller icke-offentlig (t.ex. webbapplikationer på serversidan), sker förnyelse av tokenrotation när den når 70 % av sin totala livslängd (TTL).
- Om klienten är en offentlig klient (t.ex. enkelsideswebbapplikationer) sker förnyelse av tokenrotation varje gång den används för att byta ut en åtkomst-token. Tokennbytesresponsen returnerar både en ny åtkomst-token och en ny förnyelse-token.
Hur kan jag aktivera/inaktivera förnyelse av tokenrotation i Logto?
I Logto admin konsol, gå till Admin Console > Applications och välj applikationen du vill växla förnyelse av tokenrotation. På applikationsdetaljsidan, gå till fliken “Avancerade inställningar” och rulla ner till botten, du hittar omkopplaren tillsammans med några andra användbara inställningar.
Om du stänger av omkopplaren, kommer din förnyelse-token aldrig roteras förrän den löper ut. Därför rekommenderar vi starkt att alltid aktivera förnyelse av tokenrotation.
Sammanfattning: Vad är förnyelse av tokenrotation och varför är det viktigt?
Förnyelse av tokenrotation är en bästa praxis som säkerställer säkerhet för förnyelse-token i din applikation. Det ogiltigförklarar den tidigare förnyelse-tokenen och utfärdar en ny när förnyelse-tokenen används för att erhålla en ny åtkomst-token. Denna mekanism minskar risken för en tokenläcka och säkerställer säkerheten för din förnyelse-token.
Logto följer branschledande bästa praxis och sätter alltid användarsäkerheten som högsta prioritet.
Jag hoppas att denna blogg förklarar dina tvivel om förnyelse av tokenrotation mekanism. Låt oss veta om det fortfarande är något oklart. Dina åsikter och förslag är alltid välkomna!
Testa Logto idag och upplev en säkrare autentisering.