OAuth 2.0, kullanıcıların kişisel şifrelerini paylaşmadan belirli verilere üçüncü taraf uygulamalar tarafından erişilmesine izin veren bir yetkilendirme protokolüdür. Bu protokol, kullanıcıların verilerini güvende tutarken, uygulamalara belirli yetkiler vermelerine olanak sağlar. Örneğin, bir uygulama kullanıcının Facebook hesabındaki bazı bilgilere erişmek istiyorsa, OAuth 2.0 kullanılarak şifre paylaşılmadan erişim sağlanır.

OAuth 2.0 Bileşenleri

OAuth 2.0’ın işleyişi, dört ana bileşenin etkileşimiyle gerçekleşir:

  1. Kaynak Sahibi (Resource Owner)
    • Kimdir?: Verilerin sahibi olan kişi, genellikle son kullanıcıdır.
    • Görevi Nedir?: Kaynak sahibi, üçüncü taraf bir uygulamaya (client application) kendi verilerine erişim izni verir. Örneğin, bir kullanıcı sosyal medya yönetim aracı uygulamasına Facebook verilerine erişim izni verir.
  2. İstemci Uygulaması (Client Application)
    • Kimdir?: Kaynak sahibinin verilerine erişmek isteyen üçüncü taraf uygulamadır. Örneğin, bir sosyal medya planlama aracı.
    • Görevi Nedir?: İstemci uygulaması, kullanıcıdan erişim izni almak için yetkilendirme sunucusuna bir istek gönderir. Bu izni aldıktan sonra, yetkilendirme sunucusundan bir erişim belirteci (access token) alır ve bu belirteci kullanarak kaynak sunucusuna (resource server) veri erişim istekleri gönderir.
  3. Yetkilendirme Sunucusu (Authorization Server)
    • Kimdir?: Yetkilendirme işlemlerini yöneten ve genellikle kaynak sunucusuyla aynı veya benzer bir yapıda çalışan sunucudur.
    • Görevi Nedir?: Yetkilendirme sunucusu, kullanıcıyı kimlik doğrulaması yaparak onaylar ve istemci uygulamaya bir erişim token’ı sağlar. Bu token, istemci uygulamasının kaynak sunucusuna veri erişim taleplerinde bulunmasını sağlar.
  4. Kaynak Sunucusu (Resource Server)
    • Kimdir?: Korunan kaynakları (örneğin, kullanıcı verilerini) barındıran sunucudur.
    • Görevi Nedir?: Kaynak sunucusu, gelen isteklerin geçerli bir erişim token’ı ile yapıldığını doğrular ve geçerli istekler için verileri sağlar. İstemci uygulamaları, bu token’ları kullanarak verilerinize erişir.

İşleyiş Süreci

OAuth 2.0 süreci şu adımlardan oluşur:

  1. İzin Talebi:
    • İstemci uygulaması, kullanıcıdan (kaynak sahibinden) verilerine erişim izni talep eder. Örneğin, bir sosyal medya aracı kullanıcıdan, sosyal medya verilerine erişim izni ister.
  2. Yetkilendirme:
    • Kullanıcı, yetkilendirme sunucusu aracılığıyla bu isteği onaylar. Yetkilendirme sunucusu, kullanıcıyı kimlik doğrulaması yapar ve izin verir.
  3. Token Alma:
    • Yetkilendirme sunucusu, istemci uygulamaya bir erişim token’ı sağlar. Bu token, istemci uygulamasının veri erişimi talebini geçerli kılar.
  4. Veri Erişimi:
    • İstemci uygulaması, aldığı erişim belirteci ile kaynak sunucusuna veri erişim isteklerinde bulunur. Kaynak sunucusu, belirteci doğrular ve geçerli istekler için verileri sağlar.

OAuth 2.0 Grant Types

OAuth 2.0, çeşitli yetkilendirme akışları sağlayarak farklı kullanım senaryolarına uygun çözümler sunar. Bu akışlar “Grant Types” olarak adlandırılır ve her biri belirli bir yetkilendirme ihtiyaçlarına yönelik tasarlanmıştır. İşte ana Grant Types’lar:

  1. Authorization Code Grant
    • Açıklama: Kullanıcıdan bir yetkilendirme kodu almak için kullanılır. Bu kod, kullanıcıdan doğrudan şifre almak yerine, bir yetkilendirme sunucusu aracılığıyla elde edilir. Genellikle web uygulamalarında kullanılır.
  2. Implicit Grant
    • Açıklama: Tek sayfalık uygulamalarda (SPA) kullanılan bu akış, yetkilendirme kodunu doğrudan kullanıcıdan alır ve erişim token’ını hemen tarayıcıya yönlendirir. Güvenlik nedeniyle, bu tür uygulamalarda şifre yerine token kullanılır.
  3. Resource Owner Password Credentials Grant
    • Açıklama: Kullanıcının kullanıcı adı ve şifresini doğrudan istemci uygulamaya verdiği akıştır. Bu yöntem genellikle güvenilir uygulamalar veya mobil uygulamalar için kullanılır.
  4. Client Credentials Grant
    • Açıklama: İstemci uygulamanın kendi kimlik bilgilerini kullanarak erişim belirteci aldığı akıştır. Bu yöntem, uygulamanın kendisinin kaynaklara erişmesini sağlar ve genellikle arka plan servisleri veya API’ler için kullanılır.
  5. Authorization Code with PKCE (Proof Key for Code Exchange)
    • Açıklama: Authorization Code Grant akışının daha güvenli bir versiyonudur. PKCE, istemci uygulamasının yetkilendirme kodunu güvenli bir şekilde değiş tokuş etmesine yardımcı olur ve özellikle mobil ve tek sayfalık uygulamalar için kullanılır.

Client Credentials Grant Örneği

Aşağıda, Client Credentials Grant akışında kullanılan bir istemci yapılandırma örneği bulunmaktadır:


ClientId = "m2m.client",

ClientName = "Client Credentials Client",

AllowedGrantTypes = GrantTypes.ClientCredentials,

ClientSecrets = { new Secret("511536EF-F270-4058-80CA-1C89C192F69A".Sha256()) },

AllowedScopes = { "scope1" }

  • ClientId: İstemci uygulamasının benzersiz kimliğidir. Örneğin, "m2m.client" burada istemcinin kimliğidir.
  • ClientName: İstemci uygulamasının adıdır. "Client Credentials Client" burada istemci uygulamasının adını belirtir.
  • AllowedGrantTypes: Bu, hangi yetkilendirme akışlarının geçerli olduğunu belirtir. GrantTypes.ClientCredentials bu örnekte Client Credentials Grant akışını kullanır.
  • ClientSecrets: İstemci uygulamasının kimliğini doğrulamak için kullanılan gizli anahtarları içerir. new Secret("511536EF-F270-4058-80CA-1C89C192F69A".Sha256()) ifadesi, bir gizli anahtarın SHA256 ile şifrelenmiş halini belirtir.
  • AllowedScopes: İstemcinin erişebileceği kapsamları belirtir. "scope1" burada erişim izni verilen bir kapsamı tanımlar.

Örnek Senaryo

Bir sosyal medya yönetim aracının OAuth 2.0 sürecini şu şekilde ele alabiliriz:

    1. İzin Talebi:
      • Sosyal medya yönetim aracı, kullanıcının Facebook hesabına erişim izni ister. Kullanıcı, bu isteği onaylamak için Facebook’un yetkilendirme sayfasına yönlendirilir.
    2. Yetkilendirme:
      • Kullanıcı, Facebook’ta giriş yapar ve sosyal medya aracına belirli verilere erişim izni verir. Facebook, kullanıcının onayını alır ve işlem tamamlanır.
    3. Token Alma:
      • Facebook, sosyal medya aracına bir erişim token’ı verir. Bu token, aracın kullanıcı verilerine erişmesini sağlar.
    4. Veri Erişimi:
      • Sosyal medya aracı, bu token’ı kullanarak Facebook API’leri üzerinden kullanıcının verilerine erişir. Facebook, token’ı doğrular ve geçerli istekler için verileri sağlar.

Sonuç

OAuth 2.0, kullanıcıların şifrelerini paylaşmadan belirli verilere erişim izni vermelerini sağlayan güvenli ve etkili bir protokoldür. Bu süreç, hem kullanıcıların verilerini korurken hem de uygulamaların ihtiyaç duyduğu verilere erişim sağlamasına olanak tanır. Grant Types ise OAuth 2.0’ın çeşitli kullanım senaryolarına uygun çözümler sunarak, hangi akışın hangi durumda kullanılacağını belirler. Client Credentials Grant örneği gibi yapılandırmalar, belirli senaryolarda güvenli ve etkin erişim sağlamak için kullanılır. Bu bilgiler, OAuth 2.0’ın nasıl çalıştığını ve hangi durumlarda hangi akışın uygun olduğunu anlamanıza yardımcı olacaktır.

Kategori: