Kimlik doğrulama ve yetkilendirme, modern web uygulamalarının güvenlik ve kullanıcı deneyimi açısından önemli bileşenleridir. Bu yazıda, refresh token ve access token kavramlarını detaylı bir şekilde inceleyeceğiz ve bunların nasıl çalıştığını örneklerle açıklayacağız.
Access Token Nedir?
Access token, bir kullanıcının kimliğini doğruladıktan sonra verilen kısa ömürlü bir belirteçtir. Bu token, kullanıcının belirli bir süre boyunca uygulama üzerinde yetkili işlemler gerçekleştirebilmesini sağlar.
Access Token'ın Özellikleri:
- Kısa ömürlüdür: Genellikle birkaç dakika veya saatlik geçerliliğe sahiptir.
- Kısıtlı erişim sağlar: Belirli kaynaklara veya işlemlere erişim izni verir.
- Güvenlik açısından kritik: Token'ın çalınması durumunda kötü niyetli kişilerin kısa süreliğine erişim sağlayabilir.
Refresh Token Nedir?
Refresh token, access token süresi dolduğunda yeni bir access token almak için kullanılan uzun ömürlü bir belirteçtir. Kullanıcının kimliğini tekrar doğrulamak zorunda kalmadan, yeni access token'lar alabilmesini sağlar.
Refresh Token'ın Özellikleri:
- Uzun ömürlüdür: Günlerce, haftalarca hatta aylarca geçerliliği olabilir.
- Yeniden doğrulama sağlar: Access token süresi dolduğunda yeni bir access token almak için kullanılır.
- Daha az hassas: Çalınsa bile sadece yeni access token almak için kullanılabilir, doğrudan kaynaklara erişim sağlamaz.
Örneklerle Refresh Token ve Access Token
Bir örnek üzerinden bu token'ların nasıl çalıştığını daha iyi anlayabiliriz. Bir e-ticaret uygulamasını ele alalım:
- Kullanıcının Giriş Yapması: Kullanıcı, kullanıcı adı ve şifresini girerek uygulamaya giriş yapar. Kimlik doğrulama başarılı olursa, kullanıcıya bir access token ve bir refresh token verilir.
{ "access_token": "eyJhbGciOiJIUzI1...", "refresh_token": "dGhpc2lzYXJlZnJlc2h0b2tlbg==" }
- Access Token Kullanımı: Kullanıcı, ürünleri görüntülemek veya sepetine eklemek gibi işlemler yapmak istediğinde, bu istekleri access token ile gerçekleştirir.
GET /api/products Authorization: Bearer eyJhbGciOiJIUzI1...
- Access Token Süresinin Dolması: Bir süre sonra access token'ın süresi dolar ve kullanıcı yeni bir işlem yapmak istediğinde yetkisiz erişim hatası alır.
HTTP/1.1 401 Unauthorized
- Refresh Token Kullanımı: Kullanıcı, refresh token'ını kullanarak yeni bir access token talep eder.
POST /api/token/refresh Authorization: Bearer dGhpc2lzYXJlZnJlc2h0b2tlbg==
Bu istek üzerine sunucu, yeni bir access token oluşturur ve kullanıcıya geri döner.
{ "access_token": "new_access_token_eyJhbGciOiJIUzI1..." }
- Yeni Access Token Kullanımı: Kullanıcı, yeni access token ile işlemlerine kaldığı yerden devam eder.
GET /api/products Authorization: Bearer new_access_token_eyJhbGciOiJIUzI1...
Sonuç
Access token ve refresh token, kimlik doğrulama ve yetkilendirme süreçlerinde güvenliği ve kullanıcı deneyimini artıran kritik araçlardır. Access token kısa ömürlü olup belirli bir süre boyunca erişim izni sağlarken, refresh token daha uzun ömürlüdür ve yeni access token'lar almayı mümkün kılar. Bu iki token türü, birlikte kullanıldığında güvenli ve kesintisiz bir kullanıcı deneyimi sunar.
Umarım bu yazı, refresh token ve access token kavramlarını daha iyi anlamanıza yardımcı olmuştur. Herhangi bir sorunuz varsa veya daha fazla bilgi almak isterseniz, yorum bölümünde belirtebilirsiniz!