Refresh Token
Yenileme Token'ı
- Okunuşu
- rifreş tokın
Kısaca
Refresh token, uygulamanın yeniden giriş istemeden kısa ömürlü yeni access token'lar almak için kullandığı uzun ömürlü kimlik bilgisidir.
Refresh token nedir?
Access token'lar her API isteğiyle gönderilir; bu yüzden biri sızarsa zararı sınırlamak için kısa ömürlü tutulur, çoğu zaman beş ile altmış dakika arası. Her saat yeniden giriş yapmak çekilmez olurdu; bu yüzden giriş sırasında sunucu bir refresh token da verir. Access token'ın süresi dolduğunda uygulama refresh token'ı token uç noktasına gönderir ve yeni bir access token alır.
Refresh token'lar güçlü ve uzun ömürlü olduğu için access token'lardan daha fazla korumaya ihtiyaç duyar. Yalnızca yetkilendirme sunucusuna gönderilir, sıradan API'lere asla. Tarayıcılarda en iyi, betiklerin okuyamadığı httpOnly ve secure çerezlerde; mobilde de sistem anahtarlığında (keychain) saklanır. Sunucular onları, örneğin kullanıcı çıkış yaptığında ya da parolasını değiştirdiğinde iptal edebilir.
Refresh token rotasyonu bir güvence daha ekler: her kullanım yeni bir refresh token döndürür ve eskisini geçersiz kılar. Çalınmış bir token, gerçek uygulama onu zaten yeniledikten sonra kullanılırsa sunucu bu tekrar kullanımı görür, bütün zinciri iptal eder ve yeni bir girişi zorunlu kılar. Birçok kimlik sağlayıcı bir refresh token'ın toplam ömrünü ve hareketsizlik süresini de sınırlar.
Sık yapılan bir yanlış, refresh token'ın yalnızca uzun süre geçerli bir access token olduğunu düşünmektir. Farklı bir hedef kitlesi olan farklı bir kimlik bilgisidir: API'ler onu reddetmelidir ve araya giren herhangi bir betiğin onu çalabileceği localStorage'da asla saklanmamalıdır.
Önemli noktalar
- Refresh token'lar yeni bir giriş olmadan yeni access token'lar alır.
- Access token'lar sızarlarsa zararı sınırlamak için kısa ömürlü kalır.
- Refresh token'lar yalnızca token uç noktasına gider ve güçlü koruma ister.
- Rotasyon her kullanımda yeni bir refresh token verir ve tekrar kullanımı yakalar.
- Onları httpOnly çerezlerde ya da anahtarlıkta saklayın, asla localStorage'da değil.
Örnek
async function apiFetch(url, options = {}) {
let response = await fetch(url, { ...options, credentials: "include" });
if (response.status === 401) {
// The access token expired: ask the auth server for a new one.
// The refresh token travels in an httpOnly cookie the script can't read.
const refreshed = await fetch("/auth/refresh", { method: "POST", credentials: "include" });
if (!refreshed.ok) {
window.location.assign("/login"); // refresh token expired or revoked
return;
}
response = await fetch(url, { ...options, credentials: "include" }); // retry once
}
return response;
}Sık sorulan sorular
Access token ile refresh token arasındaki fark nedir?
Access token, çağıranın neler yapabileceğini kanıtlamak için API'lere gönderilir ve hızla sona erer. Refresh token ise yalnızca yeni access token'lar almak için yetkilendirme sunucusuna gönderilir ve çok daha uzun sürer.
Refresh token'lar nerede saklanmalı?
Web uygulamalarında secure, httpOnly ve SameSite bir çerezde ya da tamamen bir backend sunucusunda. Mobil uygulamalarda ise iOS Keychain ya da Android Keystore gibi platformun güvenli depolamasında.
Refresh token rotasyonu nedir?
Her kullanıldığında yeni bir refresh token verip eskisini geçersiz kılmaktır. Eski bir token tekrar ortaya çıkarsa sunucu onun çalındığını anlar ve oturumu iptal eder.
İlgili sayfalar
- OAuthGüvenlik, s. 21OAuth, bir uygulamanın kullanıcının parolasını hiç görmeden başka bir servisteki verilerine erişmesini sağlayan açık bir yetkilendirme standardıdır.
- JWTGüvenlik, s. 17JWT, kullanıcı kimliği ve son kullanma zamanı gibi bilgileri taşıyan, imzalı ve kompakt bir token'dır; sunucunun oturum aramadan istekleri doğrulamasını sağlar.
- OturumBackend ve API'ler, s. 33Oturum, sunucunun bir kullanıcıyı birçok istek boyunca hatırlama yöntemidir; genellikle veriler sunucuda tutulur ve tarayıcıya bir oturum kimliği verilir.
- Kimlik DoğrulamaGüvenlik, s. 19Kimlik doğrulama, bir kullanıcının, cihazın veya servisin gerçekten iddia ettiği kişi olduğunu, örneğin parola ya da passkey kontrol ederek doğrulama işlemidir.
- OpenID ConnectGüvenlik, s. 22OpenID Connect (OIDC), OAuth 2.0 üzerine kurulu bir kimlik katmanıdır: uygulama, kullanıcıyı kimlik sağlayıcıyla oturum açtırıp imzalı bir ID token alır.
- CookieWeb Geliştirme, s. 7Cookie, bir web sitesinin tarayıcıdan saklamasını ve sonraki isteklerle geri göndermesini istediği, çoğunlukla oturum açık tutmak için kullanılan küçük veridir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin