Token Nedir? Access Token, Refresh Token ve Token Süresi (2026)
Token, kullanıcı kimliğini doğrulamak ve yetkilendirme yapmak için kullanılan dijital bir anahtardır. Kullanıcı adı ve şifreyi her istekte tekrar göndermek yerine token kullanılarak daha güvenli ve stateless bir yapı oluşturulur.
Access token ne kadar süre geçerlidir? Refresh token ne işe yarar? Token nerede saklanmalıdır? Bu rehberde token tabanlı authentication'ın tüm detaylarını kod örnekleri ve best practice'lerle açıklıyoruz.
Token Nedir ve Ne İşe Yarar?
Token, kullanıcı kimliğini doğrulamak ve sistemlere güvenli erişim sağlamak için kullanılan dijital bir veridir. Modern web ve mobil uygulamalarda kullanıcı adı ve şifreyi her istekte göndermek yerine token kullanılır.
Kullanıcı giriş yaptığında sunucu bir token üretir ve bunu istemciye gönderir. Bundan sonra istemci her API isteğinde bu token'ı header'a ekler. Sunucu token'ı doğrular ve erişime izin verir — şifre artık işin içinde yoktur.
Özellikle JWT (JSON Web Token), API güvenliği ve modern authentication sistemlerinde token yapısı vazgeçilmezdir.
Token Türleri: Access Token ve Refresh Token
Access Token
- Kısa ömürlüdür — genellikle 15–30 dakika geçerlidir.
- API çağrılarında kullanılır.
Authorization: Bearer <token>header'ı ile gönderilir.- Kullanıcı kimliği, rol ve izin bilgileri taşıyabilir.
Refresh Token
- Daha uzun ömürlüdür — günler veya haftalar geçerli olabilir.
- Access token süresi dolduğunda yeni token almak için kullanılır.
- Rotation uygulanırsa güvenlik seviyesi ciddi şekilde artar.
- Kullanıcı arayüzden çıkış yapmadan sessizce arka planda çalışır.
Diğer Token Türleri
- ID Token — OpenID Connect protokolünde kullanıcı bilgilerini taşır.
- CSRF Token — Cross-Site Request Forgery saldırılarına karşı koruma sağlar.
- Bearer Token — Token'ı taşıyan kişiye erişim hakkı tanıyan genel format.
Token Süresi Nedir? Ne Kadar Olmalı?
Token süresi, bir token'ın ne kadar süre geçerli kalacağını belirler. Bu süre dolduğunda token artık kullanılamaz ve yeni bir token alınması gerekir.
Access Token Süresi
Genellikle 15–30 dakika olarak ayarlanır. Kısa tutulmasının nedeni güvenliktir — token çalınsa bile kısa süre içinde geçersiz hale gelir.
- Yüksek güvenlik gerektiren uygulamalar: 5–15 dakika
- Standart web uygulamaları: 15–30 dakika
- Düşük riskli uygulamalar: 1 saate kadar uzatılabilir
Refresh Token Süresi
Genellikle 7–30 gün arasında ayarlanır. "Beni hatırla" özelliği aktifse bu süre 90 güne kadar uzatılabilir.
Access ve Refresh Token Akışı
Modern authentication akışı genellikle aşağıdaki şekilde çalışır:
- Kullanıcı giriş yapar — sunucu access token ve refresh token üretir.
- İstemci her API isteğinde access token gönderir.
- Access token süresi dolduğunda sunucu 401 Unauthorized döner.
- İstemci refresh token ile yeni access token ister.
- Sunucu yeni token üretir, eski refresh token'ı geçersiz kılar (rotation).
- Kullanıcı işlemlerine kesinti yaşamadan devam eder.
Login İsteği
↓
Access Token + Refresh Token üretilir
↓
Her API isteğinde Access Token gönderilir
↓
Access Token süresi dolar → 401 Unauthorized
↓
Refresh Token ile yeni Access Token istenir
↓
Yeni Access Token + Yeni Refresh Token (rotation)
↓
Kullanıcı kesintisiz devam eder
Token Nerede Saklanmalı?
Token saklama yöntemi, güvenliğin en kritik parçasıdır. Özellikle refresh token'ın güvenli şekilde saklanması gerekir.
- Access token mümkünse memory veya state içinde tutulmalıdır — sayfa yenilenince zaten yenilenir.
- Refresh token güvenli bir storage alanında saklanmalıdır.
Platform Bazında Öneriler
- Web: HttpOnly + Secure Cookie — JavaScript erişimine kapalı, XSS'e karşı güvenli.
- iOS: Keychain — işletim sistemi seviyesinde şifreli saklama.
- Android: EncryptedSharedPreferences veya Keystore.
localStorage kullanımı XSS saldırılarına karşı savunmasızdır. Refresh token için HttpOnly Cookie tercih edin.
// Giriş başarılı
storeSecure('refresh_token', refreshToken); // HttpOnly Cookie
store('access_token', accessToken); // Memory/State
// API isteği
if (isAccessTokenValid()) {
useAccessToken();
} else {
refreshAccessToken();
}
// Uygulama yeniden açıldığında
if (refreshTokenExists()) {
refreshAccessToken(); // Sessizce yeni token al
} else {
showLoginScreen(); // Giriş ekranına yönlendir
}
Token Güvenliği ve Best Practices (2026)
Refresh Token Rotation
Her kullanımda yeni refresh token üretilmeli, eski token geçersiz hale getirilmelidir. Bu yöntem replay saldırılarına karşı güçlü koruma sağlar. Eski token tekrar kullanılmaya çalışılırsa tüm oturum iptal edilmelidir.
Ek Güvenlik Katmanları
- Refresh endpoint'leri için rate limiting uygulanmalıdır.
- Logout işleminde refresh token sunucu tarafında iptal edilmelidir.
- Tüm token trafiği HTTPS üzerinden taşınmalıdır.
- Şüpheli kullanımda (farklı IP, konum) token geçersiz kılınabilir.
Avantajlar ve Dezavantajlar
Avantajlar
- Stateless mimari sayesinde ölçeklenebilirlik sağlar — sunucu oturum tutmaz.
- Modern web ve mobil uygulamalarla uyumludur.
- Kullanıcı deneyimini bozmadan güvenli authentication akışı sunar.
- Mikroservis mimarilerinde merkezi auth sunucusuyla kolayca entegre olur.
Dezavantajlar ve Riskler
- Refresh token çalınırsa ciddi güvenlik riski oluşabilir.
- Yanlış saklama yöntemleri XSS veya token theft riskini artırır.
- Rotation, blacklist ve revocation yapıları mimari karmaşıklık getirebilir.
- JWT token içeriği şifrelenmez, sadece imzalanır — hassas veri konulmamalıdır.
Sık Sorulan Sorular
Token nedir kısaca?
Token, kullanıcı kimliğini doğrulamak ve erişim yetkisini taşımak için kullanılan dijital bir anahtardır. Şifre yerine token kullanmak hem daha güvenli hem de daha ölçeklenebilir bir yapı sağlar.
Token süresi nedir, ne kadar olmalı?
Token süresi, token'ın geçerli kalacağı süredir. Access token için 15–30 dakika, refresh token için 7–30 gün önerilir. Süre kısaldıkça güvenlik artar ama kullanıcı deneyimi etkilenebilir — ikisi arasındaki dengeyi ihtiyaca göre kurun.
Access token ile refresh token arasındaki fark nedir?
Access token API erişimi için kullanılır ve kısa ömürlüdür (15–30 dk). Refresh token ise yeni access token üretmek için kullanılır ve çok daha uzun süre geçerlidir (günler/haftalar).
JWT bir token mıdır?
Evet. JWT (JSON Web Token), en yaygın kullanılan token formatlarından biridir. Header, payload ve signature olmak üzere üç bölümden oluşur. Payload kısmı şifrelenmez — sadece imzalanır, bu yüzden hassas veri konulmamalıdır.
Refresh token çalınırsa ne olur?
Rotation ve blacklist sistemi uygulanıyorsa eski token kullanılmaya çalışıldığında sistem bunu algılar ve tüm oturumu iptal eder. Bu yüzden refresh token rotation kritik bir güvenlik önlemidir.
Access token bulunamadı hatası neden alınır?
Bu hata genellikle token'ın süresi dolduğunda, yanlış header formatı kullanıldığında (Bearer prefix eksik) veya token storage'dan silindiğinde alınır. Çözüm: refresh token ile yeni access token alın ya da kullanıcıyı yeniden giriş yaptırın.
Sonuç
Token tabanlı authentication, modern uygulamalarda güvenliğin temel yapı taşlarından biridir. Access token ve refresh token mantığını doğru kurmak, token süresini ihtiyaca göre ayarlamak ve token'ı güvenli şekilde saklamak hem güvenlik hem de kullanıcı deneyimi açısından büyük fark yaratır.
JWT yapısını daha detaylı öğrenmek için JWT Nedir? içeriğine göz atabilirsiniz.