Türkçe
  • token
  • oidc
  • yenileme belirteci
  • erişim belirteci
  • Kimlik belirteci

OpenID Connect (OIDC) protokolündeki erişim belirteçlerini, yenileme belirteçlerini ve Kimlik belirteçlerini anlama

OpenID Connect (OIDC) Protokolü, kimlik yönetimi için yaygın olarak kabul edilen bir standart haline gelmiştir. Ancak bu belirteçlerin rollerini ve özelliklerini gerçekten anlıyor musunuz?

Charles
Charles
Developer

OIDC, OAuth 2.0 ve belirteçler

OpenID Connect Protokolü, diğer adıyla OIDC, kimlik yönetimi için temel bir çerçeve sağlayan, yaygın olarak kabul edilen bir standart haline gelmiştir. İyi bilinen OAuth 2.0 protokolü üzerinde kurulmuş bir kimlik doğrulama katmanıdır. OAuth 2.0 sadece kaynak yetkilendirmesi için kullanılırken, OIDC yeni tanıtılan Kimlik belirteci yardımıyla istemci kimlik doğrulamasını standartlaştırır ve güçlendirir.

Bekleyin... OAuth çağında erişim belirteçlerini ve yenileme belirteçlerini duymuş olabilirsiniz ve şimdi OIDC'de yeni bir kavram mı çıkıyor? Bu belirteçlerin farkını gerçekten anlıyor musunuz?

OIDC'deki erişim belirteçleri, yenileme belirteçleri ve kimlik belirteci nedir?

Pratik bir senaryoyla başlayalım.

Diyelim ki tipik bir istemci-sunucu uygulaması geliştiriyorsunuz ve bunlar birbirleriyle RESTful API'ler aracılığıyla iletişim kuruyor. API'lerinizin çoğunu özel tutmak, yalnızca yetkili istemcilerin erişmesine izin vermek istiyorsunuz. İstemciyi kimlik doğrulamak ve sunucunuza yapılan API isteklerini yetkilendirmek için bir mekanizmaya ihtiyacınız olacak.

İdeal olarak, RESTful API'lerinizin durumsuz olması gerekir; yani sunucunun herhangi bir istemci oturum bilgisi saklamaması gerekir. Geçerli bir istek geldiğinde, sunucu sadece istenen verileri yanıtlamalıdır. Burada belirteçler devreye girer. Peki böyle bir durumda hangi tür belirteci kullanmalısınız?

Erişim belirteçleri, API'lerinizi korumak için kullanılır

OAuth 2.0 ve OIDC'de, korunan her bir API, bir kaynak olarak ele alınır. Erişim belirteci, istemcinin genellikle istek başlığı ve JWT formatı aracılığıyla API kaynağı talep ederken sunucuya ilettiği belirteçtir.

Sunucu tarafında, bir istek geldiğinde, sunucu yalnızca gelen isteğin geçerli bir erişim belirteci taşıyıp taşımadığını doğrulamalıdır. Doğrulama süreci genellikle JWT belirtecinin kodunun çözülmesi, imzanın ve son kullanma süresinin doğrulanması ile istemcinin gerekli izinlere sahip olmasını sağlamak amacıyla kapsam talebinin kontrol edilmesini içerir.

Ancak düşünebilirsiniz: İstemci uygulamam geçerli bir erişim belirtecine başarılı bir oturum açmadan sonra sahip olabilir ve erişim belirteci ile sunucu API'lerini isteyebilir, bu yeterli değil mi? Neden diğer belirteçlere ihtiyacım var?

Gerçekten de, geçerli bir soru ve adım adım açıklayalım.

Yenileme belirteçlerine neden ihtiyaç duyuyoruz?

Teknik olarak erişim belirteçleri, sistemin çalışması için asgari gereksinimleri karşılarken, güvenlik endişeleri nedeniyle erişim belirteçlerinin geçerlilik süresi genellikle çok kısa (genellikle bir saat) olur. Yani sadece erişim belirteçlerimiz varsa, son kullanıcılar her erişim belirteci sona erdiğinde yeniden kimlik doğrulaması yapmak zorunda kalacaktır. Modern tek sayfa web uygulamaları (SPA'lar) ve özellikle mobil uygulamalar için sık sık oturum kapatma, kullanıcı güvenliğini korumaya çalıştığımız halde bile oldukça rahatsız edici bir kullanıcı deneyimi olabilir.

Bu nedenle, belirteç güvenliği ve kullanıcı kolaylığı arasında bir denge kurmamız gerekiyor. İşte bu yüzden yenileme belirteçleri tanıtılmıştır.

Yenileme belirteçleri neden daha uzun ömürlü olabilir?

Erişim belirteçleri API kaynaklarına erişmek için kullanılır, bu nedenle kısa ömürlü yapısı, sızdırılma veya ele geçirilme riskini azaltmaya yardımcı olur. Öte yandan, yenileme belirteçleri yalnızca yeni erişim belirteçleri almak için kullanılır, dolayısıyla erişim belirteçlerinden daha az sıklıkla kullanılırlar ve bu nedenle maruziyet riski azalır. Bu nedenle, yenileme belirteçleri için daha uzun bir geçerlilik süresine sahip olmak kabul edilebilir.

Yenileme belirteçi güvenliğini sağlama

Yenileme belirteci de istemci tarafında saklandığı için, bunların güvenliği zorlu bir problemdir, özellikle tek sayfa web uygulamaları (SPA) ve mobil uygulamalar gibi halk tarafından erişilebilen istemciler için.

Logto'da, yenileme belirteçleri otomatik bir yenileme mekanizmasına sahiptir ve bu varsayılan olarak etkindir. Bu, yetkilendirme sunucusunun yenileme belirteçlerinin belirli kriterleri karşıladığında yeni bir yenileme belirteci vermesi anlamına gelir:

  • Tek sayfa uygulamaları: Gönderen kısıtlaması olmayan istemciler olarak tanınan bu uygulamalar yenileme belirteci döngüsünü zorunlu kılar. Yenileme belirtecinin yaşam süresi (TTL) belirlenemez.
  • Yerel uygulamalar ve geleneksel web uygulamaları: Yenileme belirteci döngüsü doğal olarak etkinleştirilmiş ve TTL'nin %70'ine ulaşınca otomatik olarak yenilenir. Logto'da yenileme belirteci döngüsü hakkında daha fazla bilgi edinin

Yönetici konsolundaki uygulama detayları sayfasında, yenileme belirteci döngüsünü devre dışı bırakma seçeneğiniz olsa da, bu koruyucu önlemi sürdürmeniz şiddetle tavsiye edilir.

Kimlik belirteci nedir ve neden önemlidir?

Kimlik belirteci, OIDC'nin kimlikleri doğrulanmış kullanıcı hakkında kimlik bilgileri sağlayan benzersiz bir özelliğidir.

Erişim belirteçleri korunan kaynaklara erişmek için kullanılırken, yenileme belirteçleri yeni erişim belirteçleri almak için kullanılır, kimlik belirteçleri tipik olarak kullanıcı bilgilerini istemci tarafında ön belleğe almak için kullanılır ve kullanıcı verileri için yetkilendirme sunucusuna ek istekler yapma gereksinimini azaltır. Çoğu durumda, kimlik belirtecine sahip olmanın, kullanıcı kimliği doğrulanmış olarak eşdeğer olduğunu söylemek bile güvenlidir.

Belirteçlerle başa çıkmak için en iyi uygulamalar

  • HTTPS kullanın: İstemci ve yetkilendirme sunucusu arasındaki iletişimi güvence altına almak için her zaman HTTPS kullanın. Bu, yetkisiz kişilerin belirteçleri kesmesini ve çalmasını önler.
  • Doğru belirteç son kullanma süresi ayarlayın: Erişim belirteçleri, maruz kalma riskini en aza indirmek için kısa bir ömre sahip olmalıdır. Yenileme belirteçleri daha uzun bir geçerlilik süresine sahip olabilir.
  • Yenileme belirteci döngüsünü etkinleştir: Yenileme belirtecinin sızıntısı riskini azaltmak için yenileme belirteci döngüsünü uygula.
  • İnce-ayarlı erişim kontrolü kullanın: Erişim belirteçlerinin izinlerini sınırlamak için ince-ayarlı kapsamlar kullanın. İstemci uygulaması için gerekli izinleri isteyin. Çoğu izin denetimini atlamak için "hepsi" veya "yönetici" kapsamlarını kullanmaktan kaçının, ancak kesinlikle gerekli olmadıkça.

OIDC'deki erişim belirteçlerinin, yenileme belirteçlerinin ve kimlik belirteçlerinin önemli farklarının özeti

OIDC protokolünde, yenileme belirteçleri, erişim belirteçleri ve kimlik belirteçleri birlikte çalışarak güvenli ve sorunsuz bir kullanıcı kimlik doğrulaması sağlar.

  • Erişim belirteçleri, korunan kaynaklara erişim yetkisi sağlar.
  • Yenileme belirteçleri, yeni erişim belirteçleri için kullanıcı müdahalesini ortadan kaldırır.
  • Kimlik belirteçleri, istemcide ön belleğe alınmış kullanıcı bilgileri sağlayarak performansı artırır.

Bu belirteçlerin rolünü ve önemini anlamak, geliştiricilerin OIDC kimlik doğrulamasını uygulamalarında uygularken önemlidir.