Token'lar ile İlgili Sık Sorulan Sorular
Soru: Her metoda ayrı JWT poliçesi tanımlamak güvenlik açısından doğru bir yaklaşım olur mu?
Cevap: Hayır. JWT yapısı gereği tüm metotlara tek seferde uygulanması daha doğru olan bir kimlik doğrulama yöntemidir. Metotlar için yetkilendirme yapılmak istenirse scope tanımı ile Yetkilendirme sayfasında tarif edildiği şekilde bir yaklaşım daha doğru olur.
Soru: Eski token'lara ne oluyor?
Cevap: Token Ölümsüz Olsun seçeneği seçilmiş olan bir token hiç bir zaman geçerliliğini yitirmez. Bu seçilmediğinde, arka planda belli aralıklarla çalışmakta olan bir görev, süresi dolmuş OAuth2 token'ları temizler. JWT token'lar ise Apinizer üzerinde zaten tutulmadığı için gönderilirse politika hatasına takılır. Bundan bağımsız olarak token alma isteklerinin log kayıtları ise hiç bir zaman silinmemektedir.
Soru: Token Yenileme Sayısı (Refresh Token Count) parametresi ile belirtilen haklar kullanıldığında, en son alınan token kullanılmaya devam edebiliyor mu? Yoksa yaşama süresi içinde bir daha yenilenmeye çalışılırsa bu token geçerliliğini yitirir mi?
Cevap: Token Yenileme Sayısı (Refresh Token Count) parametresi ile belirtilen adeti geçen yenileme talepleri başarısızlıkla sonuçlanır. Bu şekilde yapılan bir yenileme isteği, herhangi bir değişikliğe yol açmaz ve token yaşam süresini doldurana dek yaşamaya devam eder.
Her bir başarılı yenileme, kullanılmakta olan OAuth2 token'ını geçersizleştirerek yeni bir token üretir. JWT token ise yapısı gereği oluşturulduktan sonra değiştirilemeyeceğinden, yenisi oluşsa dahi eskisi de yaşam süresi boyunca yaşamaya devam eder.
Soru: Token içerisindeki zaman damgalarının cinsi nedir ve nasıl okunur?
Cevap: Token decode edildiğinde içinde görülebilecek olan iat ve exp alanları token'ın alındığı anı ve geçerli olacağı son anı içinde bulunduran değişkenlerdir. Burada zaman Epoch Time olarak yazılır ve okunabilir hale çevrildiğinde UTC Date formatında görüntülenir. Örnek olarak "1724143156" değeri "Salı, 20 Ağustos 2024 11:39:16 GMT+03:00" olarak okunabilir.
Soru: Yaşam süresi bitmiş bir token'a yenileme isteği atılırsa, token yenilenmiş olur mu?
Cevap: Yenileme istekleri token'ın yaşam süresinden bağımsızdır. Önemli olan Yenileme Token'ının (refresh token) yaşam süresidir. Bu süre token alındığı anda başlar. Kullanıcı ister token aldığı anda, isterse (Yenileme Token'ının yaşam süresi dolmadan önceki bir anda olmak üzere) token öldükten sonra yenileme yapar.
- Örnek 1- Toplamda 60 saniye çalışacak bir token'a 3 kez yenileme hakkı ve her yenilemede 60 saniye yaşam süresi tanımlanmışsa, bu token'ın toplamda 60 + (60 - 60) + (2 * 60) = 180 saniye çalışması mümkündür. Çünkü ilk Yenileme Token'ının süresi token alındığı an itibariyle yaşamaya başlar ve bu örnekte token kadar yaşayabilir.
- Örnek 2- Toplamda 60 saniye çalışacak bir token'a 3 kez yenileme hakkı ve her yenilemede 180 saniye yaşam süresi tanımlanmışsa bu token'ın toplamda 60 + (180 - 60) + (2 * 180) = 540 saniye çalışması mümkündür. Çünkü ilk Yenileme Token'ının süresi token alındığı an itibariyle yaşamaya başlar ve bu örnekte token öldükten sonra 120 saniye daha yaşayabilir.
Soru: Bir API Proxy için alınan token ile başka bir API Proxy'e istek gönderebilir miyim?
Cevap: Hayır, bir token sadece alındığı API Proxy için kullanılabilir. Bununla birlikte, özel bir durum olarak API Proxy Grubu anahtarı ile alınan bir token, grup içindeki bütün API Proxy'ler için kullanılabilir.
Soru: Yenileme token'ının hakkını doldurdum, bu sınırı geçecek şekilde yenilemeye çalışırsam ne olur?
Cevap: Yenileme sınırını aşacak ilk yenileme isteğinde bu yenileme isteğinin kullanım hakkının dolduğuna dair bir hata mesajı alınır. Sonraki isteklerde ise bu token temizlenmiş olacağından "token bulunamadı" şeklinde bir hata mesajı alınır. Bu süreçte, son yenilemede edinilen token, yaşam süresi bitmediği sürece kullanılmaya devam edebilir.
Soru: Her bir yenileme isteğinde bir daha Yenileme Token'ı geliyor. Bu değişen bir durum mu?
Cevap: Üretilen Yenileme Token'ı, her bir token için tekil ve eşsizdir. Unutulma ihtimaline karşın her bir token yenilemesinde, yenilenen token ile birlikte tekrar gösterilir.
Soru: Token Ölümsüz Olsun seçeneği işaretlenmiş iken, dış etkenlerle token'ın kullanılamayacağı durumlar var mıdır?
Cevap: Evet. Aşağıdaki durumlarda token geçerliliğini yitirir:
API Proxy Management ise;
- Token'ın alındığı API Proxy undeploy etmek.
- Token'ın alındığı API Proxy'nin gizli anahtarı(private key) değiştirmek.
- Token, JWT token ise Ortam'ın (Environment) JWT token doğrulama anahtarını değiştirmek.
Credential Management ise;
- Token'ın alındığı Credential'ı silmek.
- Token'ın alındığı Credential'ın gizli anahtarı(private key) değiştirmek.
- Token, JWT token ise Ortam'ın (Environment) JWT token doğrulama anahtarını değiştirmek.