Tartışma

OAuth 2.0 & OpenID Connect Nedir ?

Başlatan İMRAN · 14 Kas 2025 02:58 · 81 Görüntülenme · 0 Yanıtlar
Konuyu Açan #0
OAuth 2.0 ve OpenID Connect modern internetin kimlik ve yetkilendirme omurgasını oluşturan iki kritik protokoldür.

  • OAuth 2.0 → Yetkilendirme (Authorization) protokolüdür.
  • OpenID Connect → Kimlik Doğrulama (Authentication) protokolüdür.
  • OIDC, OAuth 2.0 üzerine inşa edilmiştir.
Bunu şöyle özetleyebiliriz:
ProtokolNe İşe Yarar?TürMantık
OAuth 2.0Bir uygulamanın bir kullanıcının verilerine sınırlı ve güvenli erişimini sağlar.Yetkilendirme“Bu uygulama şu verilere erişebilir mi?”
OpenID ConnectKullanıcının kimliğini doğrulamak için güvenli giriş sistemi sağlar.Kimlik Doğrulama“Bu kullanıcı gerçekten o mu?”

🧩 1. Temel Kavramlar ve Roller

OAuth 2.0 Rol Tabloları

RolAçıklama
Resource OwnerVerinin sahibi (kullanıcı).
ClientVeriye erişmek isteyen uygulama (ör. mobil app).
Resource ServerKorunan verinin bulunduğu API.
Authorization ServerToken üreten güvenlik sunucusu.

OpenID Connect’de Ek Roller

RolAçıklama
OpenID Provider (OP)Kimlik doğrulayan sunucu (Google, Apple vs.).
Relying Party (RP)Kimlik doğrulama hizmetini kullanan uygulama.

📜 2. OAuth 2.0 Akışları (Grant Types)

OAuth 2.0, kullanım senaryosuna göre farklı yetkilendirme akışları sunar.

Tablo: En Yaygın OAuth Akışları

Grant TypeKullanım AlanıGüvenlik SeviyesiAçıklama
Authorization CodeWeb uygulamalarıÇok yüksekEn güvenli yöntem, kod + token değişimi.
PKCE (Code + PKCE)Mobil ve SPAEn yüksekEk güvenlik: code_verifier + code_challenge
Client CredentialsSunucu ↔ Sunucu APIYüksekKullanıcı yok; sadece uygulama kimliği.
Refresh TokenUzun süreli oturumYüksekYeni access token almaya yarar.

🔐 3. Token Türleri (Teknik Tablo)

Token TürüNe İçerir?KullanımSüre
Access Tokenİzinler (scope), süre, client IDAPI erişimiKısa süreli
Refresh TokenKimlik yenileme yetkisiYeni access token almak içinUzun süreli
ID Token (OIDC)Kullanıcı bilgisi, kimlik, oturum verisiKimlik doğrulamaKısa süreli
ÖNEMLİ:
ID Token sadece OpenID Connect’e özgüdür.
OAuth 2.0 kendi başına kimlik doğrulama yapmaz.

🧠 4. OAuth 2.0 Nasıl Çalışır? (Teknik Akış Şeması)

Authorization Code Flow (PKCE ile)

AdımTeknik Açıklama
1Client, kullanıcıyı Authorization Server'a yönlendirir.
2Kullanıcı giriş yapar ve izin verir.
3Authorization Server, Client’a Authorization Code gönderir.
4Client, bu kodu + PKCE verilerini sunucuya gönderir.
5Authorization Server doğrular ve Access Token + ID Token üretir.
6Client bu token’larla API’lara erişir.

🔍 5. OpenID Connect Nedir? (Teknik Derinlik)

OpenID Connect, OAuth 2.0’ın üzerine eklenmiş bir kimlik doğrulama katmanıdır.
API erişimi yerine kullanıcının kimliğini doğrulamak için kullanılır.
OIDC’nin getirdiği EKSİTRA bileşenler:
BileşenAçıklama
ID TokenJWT formatında, kullanıcıyı doğrulayan ana token
UserInfo EndpointKullanıcı profili bilgilerini veren API
/.well-known/openid-configurationOP’nin yapılandırma JSON dosyası

ID Token İçeriği (JWT Claim Tablosu)

ClaimAçıklama
subKullanıcının benzersiz ID’si
issToken'ı veren sunucu
audHedef client ID
iat / expToken başlangıç/bitiş
auth_timeKullanıcı son giriş zamanı
acr / amrKullanılan kimlik doğrulama yöntemi

🔎 6. OAuth 2.0 vs OpenID Connect (Karşılaştırma Tablosu)

KonuOAuth 2.0OpenID Connect
AmaçYetkilendirmeKimlik Doğrulama
Token TürüAccess, Refresh+ ID Token
Kullanıcı BilgisiVermezVerir
Kullanım AlanıAPI erişimiGiriş sistemi
Örnek“Bu app Google Drive verine erişsin mi?”“Google ile Giriş Yap”

🔐 7. Teknik Örnek: Token Yapısı (JWT Örneği)




Access Token (OAuth)


JSON
1234567{
  "iss": "https://auth.server.com",
  "aud": "api.example.com",
  "sub": "user123",
  "scope": "read write",
  "exp": 1731549050
}


ID Token (OpenID Connect)



JSON
123456789{
  "iss": "https://accounts.google.com",
  "aud": "client-12345",
  "sub": "google-user-9988",
  "email": "[email protected]",
  "email_verified": true,
  "auth_time": 1731548000,
  "exp": 1731549050
}


🧭 8. Güvenlik Mekanizmaları

Güvenlik YöntemiAçıklama
PKCEKod çalma saldırılarını engeller.
NonceID Token replay saldırısı koruması.
State ParametresiCSRF koruması.
HTTPS ZorunluluğuToken’ların çalınmasını engeller.
Short-lived Access TokenToken ele geçirilse bile işe yaramaz.

⚠️ 9. Sık Yapılan Yanlışlar

HataSonuç
Access Token'i localStorage’da tutmakXSS ile çalınır
Refresh Token’i frontend’e vermekToken ele geçirilir
HTTPS kullanmamakMITM saldırısı
PKCE kullanmamakAuthorization Code Injection

🧩 10. Sonuç ve Özet

BaşlıkAçıklama
OAuth 2.0Veriye erişim yetkisi sağlar
OpenID ConnectKimlik doğrulama sağlar
Access TokenAPI erişim bileti
ID TokenKullanıcının kimlik doğrulama belgesi
PKCEMobil/SPA için zorunlu güvenlik katmanı

Yanıt vermek için giriş yapmış olmalısınız.

0 alıntı seçildi