Wat is refresh token rotatie en waarom is het belangrijk?
Duik erin en laten we het hebben over waarom refresh token rotatie een effectieve manier is om de veiligheid van je refresh tokens te beschermen.
Wat is een refresh token?
Een refresh token is een speciaal type token dat wordt gebruikt om een nieuw toegangstoken te verkrijgen wanneer het huidige toegangstoken verloopt. Bekijk ons vorige bericht Begrip van tokens in OIDC voor meer informatie.
Tijdens de introductie hebben we ook vermeld dat in Logto, om je refresh token veiligheid te beschermen, we standaard een “refresh token rotatie” mechanisme hebben afgedwongen.
Maar wat is “refresh token rotatie” precies? Hoe profiteert het onze eindgebruikers? Laten we erin duiken!
Wat is refresh token rotatie?
Refresh token rotatie is een mechanisme dat de vorige refresh token ongeldig maakt en een nieuwe uitgeeft wanneer de refresh token wordt gebruikt om een nieuw toegangstoken te verkrijgen. Dit mechanisme zorgt ervoor dat de refresh token wordt vernieuwd voordat deze verloopt.
Waarom hebben we refresh token rotatie nodig?
Refresh tokens hebben een verlengde levensduur, meestal in weken of zelfs maanden. En aangezien we nieuwe toegangstokens kunnen verkrijgen met een refresh token, wordt de refresh token ook een aantrekkelijk doelwit voor aanvallers. Daarom moet volgens OAuth 2.0 BCP, de autorisatieserver een van de volgende maatregelen nemen om dergelijke aanvallen te voorkomen.
- Verstrekken van afzender-gebonden refresh tokens: de client ondertekent en levert een handtekening (
Sec-Token-Binding
) in de refresh-verzoekkop, zodat de uitgegeven refresh token cryptografisch is gebonden aan een specifieke client. Tegenwoordig zijn echter alleen enkele van de native clients afzender-gebonden, en de meeste moderne SPA's en mobiele clients zijn publiek. - Refresh token rotatie: de autorisatieserver geeft een nieuwe refresh token uit (meestal bij het inwisselen voor een nieuw toegangstoken) en maakt de vorige ongeldig. Dit vermindert het risico van een tokenlek.
Beste praktijken voor het implementeren van refresh token rotatie
In Logto, wanneer een gebruiker succesvol is ingelogd, zal er eerst een Grant
object worden aangemaakt in de database en de daaropvolgende uitgegeven refresh token zal een referentie grantId
hebben en verwijzen naar het allereerste Grant object.
Telkens wanneer een refresh token rotatie plaatsvindt, zal de vorige refresh token worden gemarkeerd als gebruikt, en de Logto autorisatieserver zal een nieuwe refresh token uitgeven met hetzelfde grantId
.
Laten we aannemen dat de vorige refresh token is gelekt, dan zou zowel de legitieme client of de aanvaller deze hebben gebruikt om een toegangstoken in te wisselen. En ongeacht wie dat deed, de gelekte refresh token moet al zijn geroteerd en als gebruikt zijn gemarkeerd. Een van hen die de gebruikte refresh token als tweede gebruikte, zal de autorisatieserver informeren over de inbreuk. De autorisatieserver zal alle refresh tokens met dezelfde grantId
intrekken.
In het bovenstaande geval, na het activeren van het alarm, kan de legitieme client zich opnieuw authenticeren via de inlogstroom om een nieuwe refresh token te verkrijgen. De aanvaller daarentegen zal de controle over je systeem verliezen en buiten worden geblokkeerd.
Wanneer vindt refresh token rotatie plaats?
In Logto, definieert het standaardgedrag van een refresh token rotatie:
- Als de client afzender-gebonden of niet-publiek is (bijv. server-side rendering webapplicaties), dan vindt de refresh token rotatie plaats wanneer deze 70% van zijn totale levensduur (TTL) bereikt.
- Als de client een publieke client is (bijv. single-page webapplicaties), dan vindt de refresh token rotatie elke keer plaats wanneer deze wordt gebruikt om een toegangstoken in te wisselen. Het tokenwisselantwoord zal zowel een nieuw toegangstoken als een nieuwe refresh token terugsturen.
Hoe kan ik refresh token rotatie in Logto inschakelen/uitschakelen?
In Logto beheerconsole, ga naar Admin Console > Applications en selecteer de applicatie waarvoor je refresh token rotatie wilt omschakelen. Op de applicatiedetailpagina, ga naar het tabblad “Geavanceerde instellingen” en scroll naar beneden, je zult de schakelaar vinden samen met enkele andere nuttige instellingen.
Als je de schakelaar uitzet, zal je refresh token nooit worden geroteerd totdat het verloopt. Daarom raden we sterk aan om refresh token rotatie altijd ingeschakeld te houden.
Samenvatting: Wat is refresh token rotatie en waarom is het belangrijk?
Refresh token rotatie is een best practice die de veiligheid van refresh tokens in je applicatie waarborgt. Het maakt de vorige refresh token ongeldig en geeft een nieuwe uit wanneer de refresh token wordt gebruikt om een nieuw toegangstoken te verkrijgen. Dit mechanisme vermindert het risico van een tokenlek en zorgt voor de veiligheid van je refresh token.
Logto volgt toonaangevende best practices in de industrie en stelt gebruikersveiligheid altijd als topprioriteit.
Ik hoop dat deze blog je twijfels over het refresh token rotatiemechanisme goed uitlegt. Laat ons weten als er nog iets onduidelijk is. Je feedback en suggesties zijn altijd welkom!
Probeer Logto vandaag nog en omarm een veiliger authenticatie-ervaring.