"iat" belirteç iddiasının önemini anlama ve "Geçersiz verilen zaman" hatasını giderme
Bu yazıda, ID belirteçteki "iat" iddiasının önemini inceleyeceğiz ve "ID belirteçteki Geçersiz verilen zaman" hatasını nasıl gidereceğimizi öğreneceğiz.
"iat" belirteç iddiasının önemini anlama ve "Geçersiz verilen zaman" hatasını giderme
Arka Plan
Topluluğumuzda, zaman zaman kullanıcılarımızdan "ID belirteçte Geçersiz verilen zaman" sorunuyla ilgili kafa karıştırıcı talepler duyuyoruz. Kullanıcılarımız "Dün çalışıyordu ama bugün aniden çalışmıyor" veya "Bu bilgisayarda çalışıyor ama diğerinde çalışmıyor" gibi şikayetlerde bulunuyorlar.
Bu yazıda, bu sorunun Logto'da neden meydana geldiğini keşfedeceğiz ve bununla başa çıkma becerilerini kazanacaksınız.
Giriş
OAuth 2.0 ve OpenID Connect (OIDC) içinde, ID belirteçleri, kullanıcı kimliği bilgisini güvenli bir şekilde taraflar arasında iletmekte hayati bir rol oynar. Bir ID belirteçteki iddialardan biri, yetkilendirme sunucusu tarafından ID belirtecin verildiği zamanı temsil eden "iat" (verilen zaman) iddiasıdır.
Peki, "iat" iddiası neden önemlidir?
- Belirteç tazeliği ve süresi: "iat" iddiası, bir ID belirtecinin tazeliğini değerlendirmek için önemli bir bilgi sağlar. "iat" zaman damgasını mevcut zamanla karşılaştırarak, güvenen taraflar belirtecinin ne kadar zamanda önce verildiğini belirleyebilir. Bu bilgi, güncel kimlik bilgilerini kullanmayı garanti etmesi gereken uygulamalar için değerlidir.
- Tekrarlama saldırılarını önleme: "iat" iddiası, tekrarlama saldırılarını önlemede hayati bir rol oynar. Bir tekrarlama saldırısında, bir saldırgan daha önce ele geçirilen bir belirteci yeniden kullanmaya çalışır. "iat" iddiası, güvenen tarafa belirtecin yaşı için bir tolerans penceresi ayarlama imkanı vererek bu tür saldırıları tespit etmeye yardımcı olur. Bu pencerenin dışında kalan belirteçler geçersiz sayılabilir.
- Belirteç kullanım politikalarını uygulama: Uygulamalar genellikle güvenlik nedenleriyle bir ID belirtecinin izin verilen maksimum yaşına dair politikaları yürürlüğe koyar. "iat" iddiası, güvenen tarafların bu politikaları uygulamasına olanak sağlayarak, belirteçlerin belirlenen bir zaman diliminde tüketilmesini sağlar. Bu, eski belirteçlerin kullanımından kaynaklanan risklerin minimize edilmesine yardımcı olur.
- Belirteç iptalini destekleme: Bazı senaryolarda, bir yetkilendirme sunucusu verilen belirteçleri iptal etme gereği duyabilir. "iat" iddiası, belirteç iptal süreçlerinde belirtecin verildiği zaman için açık bir zaman damgası sağlayarak önemli bir rol oynar. Belirteçlerin verilme zamanlarına göre belirlenmesi ve iptal edilmesi işlemini basitleştirir.
"iat" iddiasını ele alırken en iyi uygulamalar
- "iat" iddiasını doğrulayın: Güvenen taraflar, "iat" iddiasının kabul edilebilir bir aralığa düştüğünden emin olmak için her zaman doğrulamalıdır. Bu aralık, uygulamanın özel güvenlik gereksinimlerine bağlı olarak değişebilir.
- Saat kaymasına dikkat edin: "iat" zaman damgasını mevcut zamanla karşılaştırırken belirli bir saat kaymasına izin verin. Saat kayması, yetkilendirme sunucusu ve güvenen taraf arasındaki olası zaman farklarını kapsar.
- Belirteç süresi politikaları belirleyin: "iat" iddiasını "exp" (bitiş zamanı) iddiasıyla birleştirerek kapsamlı belirteç kullanım politikaları uygulayın, uygulamanın genel güvenlik duruşunu iyileştirin.
Sorun Giderme
Şimdi, meşhur "Geçersiz verilen zaman" hatasının asıl nedeni neredeyse netleşti.
Tekrarlama saldırılarını önlemek ve saat kaymasını da göz önünde bulundurmak için, Logto daha önce ID belirteçleri için 60 saniyelik bir tolerans penceresi ayarlamıştı. Dünya zamanı ile 60 saniyeden fazla zaman farkına sahip herhangi bir güvenen taraf potansiyel olarak risk altında sayılır ve ID belirteç doğrulamasından geçemez. Yani "Geçersiz verilen zaman" hatası.
Ancak, gerçek dünyada saat kayması meydana gelir, bazen bilgisayarınız dünya saat sunucusuyla senkronize olmak için bağlantı kuramaz. Bazen yetkilendirme sunucusu senkronize değildir. Bazen, daha da kötüsü, ikisi de senkronize değildir.
Dahası, SSO senaryolarında, çeşitli istemciler ve SSO sağlayıcısı arasındaki zaman farkları daha da büyük olabilir.
Çözüm
Ağrıyı hafifletmek ve güvenlik önlemlerini de göz önünde bulundurmak için, Logto şimdi SSO olmayan kimlik doğrulamalar için iat toleransını 60 saniyeden 5 dakikaya, SSO senaryoları için ise 10 dakikaya çıkardı.
Bu arada, bilgisayar zamanınızın dünya ile senkronize olup olmadığını kontrol etmek için şu kullanışlı araç sitesini kullanabilirsiniz: https://time.is Zamanınızı manuel olarak senkronize edin veya başka bir zaman sunucusuna geçin, zaman farkının her zaman tolerans penceremiz içinde olduğundan emin olun.
Sonuç
ID belirteçlerindeki "iat" iddiası, modern uygulamalarda kimlik ve erişim yönetiminin güvenliğini artırmak için kritik bir unsurdur. "iat" iddiasını ele alırken en iyi uygulamaları uygulamak, sağlam ve güvenli bir kimlik doğrulama süreci sağlar.
Ayrıca, bilgisayar zamanınızın her zaman dünya saat sunucusuyla senkronize olduğundan emin olun.