OAuth 2.0 mı OpenID Connect mi? Kimlik Doğrulama Protokolü
OAuth 2.0 mı OpenID Connect mi? Kimlik Doğrulama Protokolü
OAuth 2.0 ve OpenID Connect sıklıkla bir arada anılan, ancak tamamen farklı amaçlar taşıyan iki protokoldür. Yazılım geliştirme, sistem güvenliği veya kimlik yönetimi konularında karar verirken bu farkları anlamak kritik önem taşır. Her iki protokol de modern web uygulamalarında kullanılsa da, yetkilendirme, kullanıcı bilgisi alma ve güvenlik mekanizmaları açısından belirgin farklılıklar vardır. Doğru protokolü seçmek, uygulamanızın işlevselliğini ve güvenliğini doğrudan etkileyecektir.
OAuth 2.0: Yetkilendirme Protokolü Olarak Tanımlanması
OAuth 2.0, temelde bir yetkilendirme protokolüdür. Kullanıcının, uygulamasına başka bir hizmete erişim izni vermesini sağlar. Örneğin, bir mobil uygulamanın Facebook hesabınızdaki fotoğraflara erişmesine izin vermeniz durumunda OAuth 2.0 devreye girer. Bu protokol, kullanıcının parolasını paylaşmadan, kontrollü ve sınırlı erişim sağlar.
OAuth 2.0'ın temel özellikleri:
- Erişim tokenı (access token) üretir ve kullanır
- Kullanıcı kimliği hakkında bilgi sağlamaz
- İçeriğe erişim izni verir (örneğin, fotoğraf, dosya)
- Farklı kapsamlar (scopes) ile granüler kontrol sağlar
- Uzun vadeli izinler için refresh token kullanır
OAuth 2.0, temelde bir "kapı anahtarı" gibi çalışır. Anahtarın sizin olması, kapının açılmasına izin verir, ancak kapının arkasında kim olduğu hakkında bilgi vermez.
OpenID Connect: Kimlik Doğrulama Katmanı
OpenID Connect, OAuth 2.0 üzerine inşa edilen bir kimlik doğrulama katmanıdır. OAuth 2.0'ın yetkilendirme özelliklerine, kullanıcı kimliğini doğrulama yeteneğini ekler. Başka bir deyişle, "kim olduğunuzu" kanıtlar.
OpenID Connect'in temel özellikleri:
- ID token (JWT formatında) üretir
- Kullanıcının gerçek kimlik bilgilerini içerir (isim, email, profil fotoğrafı)
- Kullanıcı bilgisi almak için UserInfo endpoint kullanır
- OAuth 2.0 tarafından desteklenen tüm yetkilendirme akışlarını kullanır
- Standart olarak OIDC protokolü, OAuth 2.0'dan daha güvenlidir
Önemli fark: OAuth 2.0 "ne yapabileceğini" söyler, OpenID Connect "kim olduğunu" söyler.
Teknik Açıdan Temel Farklar
| Özellik | OAuth 2.0 | OpenID Connect |
|---|---|---|
| Amaç | Yetkilendirme | Kimlik doğrulama + Yetkilendirme |
| Token Türü | Access Token (opaque veya JWT) | ID Token (JWT) + Access Token |
| Kullanıcı Bilgisi | Sağlamaz | ID Token ve UserInfo endpoint'i aracılığıyla sağlar |
| Standartlaştırma | Geniş, ancak belirsiz alanlar vardır | Daha kesin ve standardize edilmiş |
| Kullanım Alanı | API erişimi, Kaynak paylaşımı | Kullanıcı girişi, Çoklu oturum açma (SSO) |
Praktik Seçim Kriteri: Hangisini Kullanalım?
OAuth 2.0 tercih edilir:
- Harici bir servise API erişimi gerektiğinde
- Sadece yetkilendirme (izin verme) işlemi yapmanız gerektiğinde
- Kullanıcı kimliğini doğrulamaya ihtiyaç yoksa
- Basit kaynak paylaşımı modelleri için
OpenID Connect tercih edilir:
- Kullanıcı girişi ve kimlik doğrulama gerektiğinde
- Çoklu oturum açma (SSO) sistemi kurulurken
- Kullanıcı profil bilgilerine ihtiyaç olduğunda
- Kurumsal uygulamalarda merkezi kimlik yönetimi sağlarken
- Mobil ve web uygulamalarında tutarlı kimlik doğrulama için
Gerçek dünyada çoğu modern uygulama her iki protokolü de birlikte kullanır. OpenID Connect ile kullanıcı girişi sağlanır, OAuth 2.0 ile ise o kullanıcının dış hizmetlere erişimi kontrol edilir.
Güvenlik Açısından Değerlendirme
OpenID Connect, OAuth 2.0'ın üzerine inşa edildiği için, tasarım itibariyle daha güvenlidir. ID token'lar JWT formatında gelerek, imza ve şifreleme desteği sağlarken, OAuth 2.0'ın access token'ları daha belirsiz ve korunmasız olabilir. Ancak her iki protokol de güvenli bir şekilde kullanıldığında etkindir.
OpenID Connect kullanırken, ID token'ın imzasını ve süresi dolup dolmadığını kontrol etmek zorunludur. OAuth 2.0'da ise token'ın geçerliliği daha zayıf bir şekilde doğrulanabilir.
Eğitim seçimi yaparken olduğu gibi, protokol seçiminde de ihtiyaçlarınızı net olarak tanımlamak gerekir. Yetkilendirme mi yoksa kimlik doğrulama mı, yalnızca bir amacı mı ikisini de mi gerekli kılıyorsunuz? Bunu belirledikten sonra, OAuth 2.0 veya OpenID Connect arasında kolayca karar verebilirsiniz. Modern güvenli uygulamalar, genellikle her iki teknolojiden de yararlanarak en iyi sonucu elde ederler.