Türkçe

OAuth 2.0'ın kapsamlı bir açıklaması; küresel uygulamalarda güvenli kimlik doğrulama ve yetkilendirme için yetkilendirme türlerini, güvenlik hususlarını ve uygulama en iyi uygulamalarını kapsar.

OAuth 2.0: Kimlik Doğrulama Akışlarına Kesin Rehber

Günümüzün birbirine bağlı dijital dünyasında, güvenli kimlik doğrulama ve yetkilendirme çok önemlidir. OAuth 2.0, kaynaklara güvenli yetkilendirilmiş erişim verme konusunda endüstri standardı protokolü olarak ortaya çıkmıştır. Bu kapsamlı kılavuz, OAuth 2.0'ın temel kavramlarını, farklı yetkilendirme türlerini, güvenlik hususlarını ve uygulama için en iyi uygulamaları açıklayarak OAuth 2.0'ın karmaşıklıklarını inceleyecektir. İster deneyimli bir geliştirici olun, ister web güvenliğine yeni başlıyor olun, bu kılavuz size OAuth 2.0 ve modern uygulamaların güvenliğini sağlamadaki rolü hakkında sağlam bir anlayış sağlayacaktır.

OAuth 2.0 Nedir?

OAuth 2.0, uygulamaların Facebook, Google veya kendi özel API'niz gibi bir HTTP hizmetinde kullanıcı hesaplarına sınırlı erişim elde etmesini sağlayan bir yetkilendirme çerçevesidir. Kullanıcı kimlik doğrulamasını, kullanıcı hesabını barındıran hizmete devreder ve üçüncü taraf uygulamalarına, kullanıcının kimlik bilgilerini ifşa etmeden kullanıcı verilerine erişme yetkisi verir. Bunu bir vale hizmetine anahtar vermeye benzetebiliriz; arabanızı park etmelerine izin verirsiniz, ancak torpido gözünüze veya bagajınıza (kişisel verilerinize) erişmelerine izin vermezsiniz.

OAuth 1.0'dan Temel Farklılıklar: OAuth 2.0, OAuth 1.0 ile geriye dönük uyumlu değildir. Web uygulamaları, mobil uygulamalar ve masaüstü uygulamaları da dahil olmak üzere daha geniş bir uygulama yelpazesine hitap edecek şekilde basitlik ve esneklik göz önünde bulundurularak tasarlanmıştır.

OAuth 2.0'ın Temel Kavramları

OAuth 2.0'ı anlamak için, temel bileşenlerini kavramak çok önemlidir:

OAuth 2.0 Yetkilendirme Türleri: Doğru Akışı Seçmek

OAuth 2.0, her biri farklı senaryolara uygun çeşitli yetkilendirme türleri tanımlar. Uygun yetkilendirme türünü seçmek, güvenlik ve kullanılabilirlik açısından çok önemlidir.

1. Yetkilendirme Kodu Yetkilendirmesi

Yetkilendirme kodu yetkilendirmesi, en yaygın kullanılan ve istemcinin bir istemci sırrını güvenli bir şekilde saklayabildiği web uygulamaları ve yerel uygulamalar için önerilen yetkilendirme türüdür.

Akış:

  1. İstemci, kaynak sahibini yetkilendirme sunucusuna yönlendirir.
  2. Kaynak sahibi, yetkilendirme sunucusu ile kimliğini doğrular ve istemciye izin verir.
  3. Yetkilendirme sunucusu, kaynak sahibini bir yetkilendirme koduyla istemciye geri yönlendirir.
  4. İstemci, yetkilendirme kodunu bir erişim belirteci ve isteğe bağlı olarak bir yenileme belirteciyle değiştirir.
  5. İstemci, korunan kaynaklara erişmek için erişim belirtecini kullanır.

Örnek: Bir kullanıcı, muhasebe yazılımını (istemci), işlemleri otomatik olarak içe aktarmak için banka hesabına (kaynak sunucusu) bağlamak istiyor. Kullanıcı, oturum açmak ve izin vermek için bankanın web sitesine (yetkilendirme sunucusu) yönlendirilir. Banka daha sonra kullanıcıyı bir yetkilendirme koduyla muhasebe yazılımına geri yönlendirir. Muhasebe yazılımı bu kodu bir erişim belirteciyle değiştirir ve bunu kullanıcının işlem verilerini bankadan almak için kullanır.

2. Örtük Yetkilendirme

Örtük yetkilendirme, öncelikle istemcinin bir istemci sırrını güvenli bir şekilde saklayamadığı tarayıcı tabanlı uygulamalar (örneğin, tek sayfalı uygulamalar) için kullanılır. Genellikle, PKCE (Kod Değişimi için Kanıt Anahtarı) ile Yetkilendirme Kodu Yetkilendirmesi lehine caydırılır.

Akış:

  1. İstemci, kaynak sahibini yetkilendirme sunucusuna yönlendirir.
  2. Kaynak sahibi, yetkilendirme sunucusu ile kimliğini doğrular ve istemciye izin verir.
  3. Yetkilendirme sunucusu, kaynak sahibini URL parçasında bir erişim belirteciyle istemciye geri yönlendirir.
  4. İstemci, erişim belirtecini URL parçasından çıkarır.

Güvenlik Hususları: Erişim belirteci doğrudan URL parçasında açığa çıkarıldığından, ele geçirilmeye karşı savunmasızdır. Ayrıca, verilen yenileme belirteci olmadığından erişim belirtecini yenilemek de daha zordur.

3. Kaynak Sahibi Parola Kimlik Bilgileri Yetkilendirmesi

Kaynak sahibi parola kimlik bilgileri yetkilendirmesi, istemcinin kaynak sahibinin kullanıcı adını ve parolasını doğrudan yetkilendirme sunucusuna sağlayarak bir erişim belirteci almasına olanak tanır. Bu yetkilendirme türü yalnızca istemciye yüksek düzeyde güvenildiğinde ve kaynak sahibiyle doğrudan bir ilişkisi olduğunda kullanılmalıdır (örneğin, istemci kaynak sunucusuyla aynı kuruluş tarafından sahip olunuyor ve işletiliyor).

Akış:

  1. İstemci, kaynak sahibinin kullanıcı adını ve parolasını yetkilendirme sunucusuna gönderir.
  2. Yetkilendirme sunucusu, kaynak sahibinin kimliğini doğrular ve bir erişim belirteci ve isteğe bağlı olarak bir yenileme belirteci verir.
  3. İstemci, korunan kaynaklara erişmek için erişim belirtecini kullanır.

Güvenlik Hususları: Bu yetkilendirme türü, istemci doğrudan kullanıcının kimlik bilgilerini ele aldığından, yetkilendirilmiş yetkilendirmenin faydalarını atlar. Kesinlikle gerekli olmadıkça şiddetle tavsiye edilmez.

4. İstemci Kimlik Bilgileri Yetkilendirmesi

İstemci kimlik bilgileri yetkilendirmesi, istemcinin kendi kimlik bilgilerini (istemci kimliği ve istemci sırrı) kullanarak bir erişim belirteci almasına olanak tanır. Bu yetkilendirme türü, istemci bir kaynak sahibi adına değil, kendi adına hareket ettiğinde kullanılır (örneğin, bir uygulamanın sunucu istatistiklerini alması).

Akış:

  1. İstemci, istemci kimliğini ve istemci sırrını yetkilendirme sunucusuna gönderir.
  2. Yetkilendirme sunucusu istemcinin kimliğini doğrular ve bir erişim belirteci verir.
  3. İstemci, korunan kaynaklara erişmek için erişim belirtecini kullanır.

Örnek: Bir raporlama aracının (istemci), rapor oluşturmak için bir CRM sisteminden (kaynak sunucusu) verilere erişmesi gerekiyor. Raporlama aracı, bir erişim belirteci almak ve verileri almak için kendi kimlik bilgilerini kullanır.

5. Yenileme Belirteci Yetkilendirmesi

Yenileme belirteci yetkilendirmesi, geçerli erişim belirtecinin süresi dolduğunda yeni bir erişim belirteci almak için kullanılır. Bu, kaynak sahibinin istemciyi yeniden yetkilendirmesini gerektirmekten kaçınır.

Akış:

  1. İstemci, yenileme belirtecini yetkilendirme sunucusuna gönderir.
  2. Yetkilendirme sunucusu, yenileme belirtecini doğrular ve yeni bir erişim belirteci ve isteğe bağlı olarak yeni bir yenileme belirteci verir.
  3. İstemci, korunan kaynaklara erişmek için yeni erişim belirtecini kullanır.

OAuth 2.0 Uygulamanızın Güvenliğini Sağlama

OAuth 2.0'ı uygulamak, güvenlik açıklarını önlemek için güvenliğe dikkat etmeyi gerektirir. İşte bazı önemli hususlar:

OpenID Connect (OIDC): OAuth 2.0 Üzerine Kimlik Doğrulama

OpenID Connect (OIDC), OAuth 2.0 üzerine inşa edilmiş bir kimlik doğrulama katmanıdır. Kullanıcıların kimliğini doğrulamanın ve temel profil bilgilerini almanın standart bir yolunu sağlar.

OIDC'de Temel Kavramlar:

OIDC Kullanmanın Faydaları:

Küresel Ortamda OAuth 2.0: Örnekler ve Hususlar

OAuth 2.0, küresel olarak çeşitli endüstrilerde ve bölgelerde yaygın olarak benimsenmiştir. İşte farklı bağlamlar için bazı örnekler ve hususlar:

Küresel Hususlar:

OAuth 2.0 Uygulamak için En İyi Uygulamalar

OAuth 2.0'ı uygularken izlenecek bazı en iyi uygulamalar şunlardır:

Sonuç

OAuth 2.0, modern uygulamalarda güvenli kimlik doğrulama ve yetkilendirme için güçlü bir çerçevedir. Temel kavramlarını, yetkilendirme türlerini ve güvenlik hususlarını anlayarak, kullanıcı verilerini koruyan ve üçüncü taraf hizmetlerle sorunsuz entegrasyon sağlayan güvenli ve kullanıcı dostu uygulamalar oluşturabilirsiniz. Kullanım örneğiniz için uygun yetkilendirme türünü seçmeyi, güvenliğe öncelik vermeyi ve sağlam ve güvenilir bir uygulama sağlamak için en iyi uygulamaları izlemeyi unutmayın. OAuth 2.0'ı benimsemek, küresel ölçekte kullanıcılara ve geliştiricilere fayda sağlayan daha bağlantılı ve güvenli bir dijital dünya sağlar.