Gönderi

OAuth Protokolü

OAuth Protokolü

İnternette gezinirken sık sık “Google ile Giriş Yap” veya “Facebook ile Devam Et” gibi butonlarla karşılaşırız. Parolamızı yazmak yerine bu butonlarla hesaplarımıza giriş yaparız.

OAuth Protokolü

İşte bu kolaylığın arkasında OAuth (Open Authorization) protokolü vardır. Peki nedir bu teknoloji tam olarak?

Basitçe ifade etmek gerekirse; OAuth, bir web sitesinin veya uygulamanın sizin adınıza başka bir servisten (Google, Twitter vs.) belirli bilgilere izinli bir şekilde erişmesini sağlayan açık kaynak bir standart. Bunu bir senaryo ile daha iyi anlayalım.

Bir arkadaşımızın evimize gelmiş olan bir postayı alması gerektiğini düşünelim. Anahtarlığımızda, posta kutumuz için ayrı, evimizin giriş kapısı için ayrı iki anahtar var. Arkadaşımıza komple anahtarlığımızı vermeyiz. Anahtarlığımızdan posta kutusunun anahtarını çıkarır ve sadece posta kutusunun anahtarını veririz ve arkadaşımız posta kutusunu açıp postayı alabilir. OAuth’ta tam olarak bu mantıkla çalışır.

Sizin asıl parolanızı paylaşmadan, siteye sadece belirli bilgilere ulaşması için (e-posta adresiniz, adınız…) erişim yetkisi verir.

OAuth Neden Önemli?

En büyük faydası, birden fazla siteye üye olurken aynı parolayı kullanma riskini ortadan kaldırması. Her site için farklı bir parola oluşturup hatırlamak zorunda kalmassınız. Bu hem kullanım kolaylığı sağlar hem de güvenliğinizi artırır. Üye olduğunuz site hacklenirse saldırganlar sadece o sitenin ulaşabildiği verilere ulaşabilir. Google ile giriş yaptıysanız Google parolanıza ulaşamaz. Ancak…

Bu kolaylığın getirdiği riskler de vardır. Eğer ana hesabınızın parolası çalınırsa, OAuth ile bağlı tüm diğer hesaplarınız da tehlikeye girebilir. Bu nedenle, ana hesabınızda iki faktörlü kimlik doğrulama (2FA) gibi ek güvenlik önlemleri kullanmak, bu riskleri en aza indirmek için kritik önem taşır.

Nasıl Çalışır ?

Bu süreç aşağıdaki gibi 6 basit adımdan oluşur.

oauth

Kaynak Sahibi (Resource Owner): Bu, sensin. Verinin sahibi ve bu verilere erişim iznini veren kişi sensin.

İstemci (Website, app vb): Bu, senin giriş yapmak istediğin web sitesi veya uygulamadır (örneğin, en yukarıdaki hackthebox giriş sayfası).

Yetkilendirme Sunucusu (Google, facebook, twitter..): Bu, senin hesabının bulunduğu ana servistir.

  1. Yetki İsteği: İstemci, bir yetkilendirme kodu (authorization code) almak için kullanıcıyı Yetkilendirme Sunucusu’na yönlendirir. Sen siteye Google, facebook benzeri bir hesap ile giriş yapmak istediğini söylersin.

  2. Kullanıcı Onayı: Yetkilendirme Sunucusu, kullanıcıya (sana) hangi verilere erişim izni istendiğini gösterir ve onaylamanı bekler.

  3. Yetki Kodu Alımı: Onay verdiğinde, Yetkilendirme Sunucusu, İstemci’ye bir yetkilendirme kodu gönderir.

  4. Onayladın. Arkaplanda bir token oluştu.

  5. Erişim Jetonu Alımı: İstemci, bu yetkilendirme kodunu ve kendi gizli anahtarını (client secret) kullanarak, Yetkilendirme Sunucusu’ndan bir erişim jetonu (access token) talep eder. Bu adım çok kritiktir çünkü doğrudan kullanıcıyla değil, sunucular arasında gizli ve güvenli bir iletişimle gerçekleşir.

  6. Kaynak Erişimi: İstemci, artık bu erişim jetonunu kullanarak senin verilerine (e-posta, profil bilgisi vb.) erişebilir.

Meraklısına Tarihçe

OAuth’ın doğuşu, 2006 yılında Twitter’ın API’si (uygulama programlama arayüzü) etrafında dönen bir problemle başladı. O zamanlar, bir uygulamanın Twitter hesabına erişmesi için kullanıcı adının ve şifresinin doğrudan uygulamaya verilmesi gerekiyordu. Bu, büyük bir güvenlik zafiyeti yarattı.

Mühendisler, bu durumu düzeltmek için ortak bir çözüme ihtiyaç duydu. O dönemde kullanılan OpenID ve benzeri protokoller, bu tür yetkilendirme senaryoları için uygun değildi. Böylece, Blaine Cook (Twitter), Chris Messina, ve David Recordon gibi isimlerin öncülüğünde yeni bir protokol tasarlama fikri ortaya çıktı. 2007 yılında ilk versiyon olan OAuth 1.0 geliştirildi.

Protokolün sadeliği ve esnekliği, kısa sürede Google, Facebook ve diğer büyük teknoloji şirketleri tarafından benimsendi. Zamanla oluşan ihtiyaçlar ve güvenlik geliştirmeleriyle birlikte, 2012 yılında günümüzde yaygın olarak kullanılan OAuth 2.0 sürümü yayınlandı. Bu sürüm, daha modern web ve mobil uygulamalara daha uygun bir yapıya sahipti ve protokolün küresel bir standart haline gelmesini sağladı.

Bu gönderi CC BY 4.0 lisansı altındadır.