OpenID Connect Protokolü
İnternette gezinirken sık sık karşımıza çıkan “Google ile Giriş Yap” veya “Facebook ile Devam Et” butonları, hayatımızı kolaylaştırıyor. Bu butonların arkasındaki yetkilendirme sistemi olan OAuth Protokolünü zaten konuşmuştuk. Lütfen bu konuyu incelemeden önce buraya tıklayarak OAuth protokolünü inceleyin. OAuth, tıpkı bir arkadaşınıza posta kutunuzun anahtarını vermeniz gibi, bir siteye sizin adınıza belirli bir görevi yerine getirmesi için yetki verir. Ancak bir eksiği vardır:
Anahtarı kime verdiğini söylemez.
Peki ya o anahtarı taşıyan kişinin kim olduğunu bilmeniz gerekseydi? İşte bu boşluğu doldurmak için OpenID Connect (OIDC) ortaya çıktı. OIDC, OAuth 2.0’ın üzerine inşa edilmiş, onunla birlikte çalışan ve yetkilendirme değil, kimlik doğrulama amacı güden bir protokoldür. Eğer OAuth size bir anahtar veriyorsa, OIDC de size bu anahtarı taşıyan kişinin kimlik kartını verir. Kafanız karışmasın, hemen ne demek istediğimi biraz açıyorum.
OpenID Connect Nedir?
Basitçe ifade etmek gerekirse; OpenID Connect, bir kişinin kimliğini güvenli bir şekilde doğrulamak ve bu kişi hakkında temel bilgileri (ad, soyad, e-posta, profil fotoğrafı) almak için kullanılan açık kaynaklı bir protokoldür.
Temel farkı şöyle özetleyebiliriz:
OAuth 2.0 = Yetkilendirme (İzin vermek). Bir uygulama, sizin adınıza bir iş yapmaya yetkilendirilir.
OpenID Connect = Kimlik Doğrulama (Kim olduğunu kanıtlamak). Bir uygulama, sizin kim olduğunuzu öğrenir.
OIDC’nin en önemli çıktısı olan ID Token, kullanıcı kimliğini taşıyan standart bir formattır: JWT (JSON Web Token). Bu token, uygulamanın kimlik sağlayıcıdan (Google, Facebook vs.) gelen bilgilerin geçerliliğinden emin olmasını sağlar.
OIDC’nin Kalbindeki İki Önemli Belirteç
OIDC, işini iki ana token türüyle yapar:
ID Token (Kimlik Belirteci): Bir kullanıcının kimliğini kanıtlayan belgedir. Bu JWT formatındaki token, kullanıcının benzersiz kimliğini, adını ve e-posta adresi gibi temel bilgileri içerir. Uygulama, bu token’ı okuyarak “Evet, bu kişi gerçekten de iddia ettiği kişidir” der.
Access Token (Erişim Belirteci): Bu, OAuth’tan tanıdığımız belirteçtir. Amacı, bir kaynağa (örneğin bir API’ye) erişim yetkisi vermektir. Önemli nokta şudur: Access Token herhangi bir kimlik bilgisi taşımaz, sadece yetkiyi temsil eder.
Nasıl Çalışır ?
Daha önce OAuth için bir excalidraw çalışması yapmıştım.
E ne demiştik. OpenID Connect Protokolü, OAuth Protokolünün üstüne inşa edilmiş olan bir protokoldür.
Öyleyse dediklerimizi uygulayalım.
Yukarıdaki görselde göreceğimiz gibi. OAuth protokolü sadece yetkilendirme görevini görür. Kimlik doğrulama tarafında bulunan bu açıklığı ise, OpenID Connect protokolü çözer.
Özetle;
- HacktheBox sitesine girdim.
- Google ile Giriş Yap’a bastım.
- Google benden kimliğimi doğrulamamı istedi.
- Bu kimliği e-postamı ve şifremi yazarak Google’a giriş yaparak doğruladım. Google’a kendimi tanıttım. Burada OpenID Connect Protokolünü kullandım.
- Daha sonra Google bana ‘Bu uygulama senden şunları istiyor. Bu bilgileri paylaşmama izin veriyor musun?’ diye sordu. Bu kısım Oauth 2.0 protokolünü kullandı.. Benden, bir yetkilendirmeye onay vermemi istedi. Bende “Bu uygulamaya izin ver” butonuna bastım.
- Google hem benim kim olduğumu yani kimliğimi hem de istenilen bilgileri uygulamaya verdi. Bu kısımda da OpenID Connect ve OAuth Protokolleri birleşti.
Sonuç: Neden İkisi Bir Arada?
OpenID Connect ve OAuth 2.0, birbirinin yerini alan değil, birbirini tamamlayan protokollerdir.
- OIDC sizin kim olduğunuzu kanıtlar.
- OAuth ise sizin adınıza bir şeyler yapmaya yetki verir.
Bu iki protokolün birlikte kullanılması, modern “Tek Oturum Açma” (SSO - Single Sign-On) sistemlerinin bel kemiğini oluşturur ve kullanıcılar için hem kolay hem de güvenli bir deneyim sağlar.