Herkese iyi hafta sonları bu konuda bahsedeceğim başlıklar Oauth protokolü nedir ? İşleyişi Nasıldır ? OAuth 2.0 üzerine kurulu protokoller nelerdir ?
Oauth protokolü nedir ?
Açılımı ile Open Authorization Türkçe |Açık Yetkilendirme. Kısaca iki uygulama arasındaki kimlik doğrulama işlemini sizin yetkilendirmeniz ile basit bir aktarma işlemi sayesinde halleden protokoldür. Burada dikkat edilmesi gereken kısım bir protoköl olmasıdır sadece web siteleri üzerinde değil masaüstü uygulamaları- mobil uygulamalar üzerinde de yetki verdiğiniz takdirde çalışmaktadır. "Access token - veri kümesi" SID ve kullanıcı ayarlarını içermektedir ve siz başka bir uygulamaya kayıt olmak veya giriş istediğinizde eğer aynı bilgileri daha önce başka bir uygulamada kullanmış iseniz yeniden girmek yerine bu protokol sayesinde güvenli bir şekilde bilgileriniz üçüncü parti uygulama ile paylaşılır ve zahmete girmeden kayıt işleminiz tamamlanmış olur peki bunu nasıl yapar işin arka planında neler var ?
Oauth Protokolü Çalışma Mantığı
Çalışma mantığını madde madde ve örnekle anlatacağım.
Google hesabınızı kullanarak bir siteye kayıt olmak veya giriş yapmak istiyorsunuz diyelim İlk olarak
( https://developers.google.com/identity/protocols/oauth2?csw=1 )
"Sign İn" Seçeneğine tıklıyoruz ve
"with Google" seçeneğine tıklıyoruz bundan sonra sırasıyla;
Authorization ( Yetki İsteme)
Site sizden Oauth Protoklü üzerinde kayıtlı olan bilgileri kullanmak için yetki istiyor.
- Authorization Grant
Onayladığınız zaman "medium" yetki izni kazanacaktır.
- Access Token Claim
Verdiğiniz izin ile "medium.com" Resource Server'dan "access token" ister.
Verilen izin kontrol edilir ve geçerliliği doğrulandığı zaman sunucudan istemciye access token verilecektir.
Bu işlemden sonra verilen Access Token denenir ve doğru olduğunda "medium.com" a giriş gerçekleşecektir.
Dönecek başarılı denemenin bir örneği
Kod:
HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache
{
"access_token":"MTQ0NjJkZmQ5OTM2NDE1ZTZjNGZmZjI3",
"token_type":"bearer",
"expires_in":3600,
"*******_token":"IwOGYzYTlmM2YxOTQ5MGE3YmNmMDFkNTVk",
"scope":"create"
}
Peki yanıt başarısız dönseydi ?
Bu gibi bir durumda kolayca bir hata yanıtı dönmelidir dönecek yanıt " error and error_description" başlığı altındadır. Örnek başlıklar sırası ile aşağıdaki gibidir.
- invalid_request : İstek olarak gönderilen mesajın bir parametresi yok anlamına gelmektedir.
- invalid_client : Gönderilen isteğin geçersiz olduğunu göstermektedir.
- invalid_grant : Yetkilendirme kodu geçersiz veya süresi dolmuş ise dönecek mesaj budur veya verilen yetki yönlendirmesi ile asıl erişilmesi gereken link ile eşleşmez ise dönecek hatadır.
- unauthorized_client : İstemcinin verilen erişimi kullanma etkisi yok anlamına gelmektedir yani eğer siz Facebook'un Oauth protokolünü kullanmasını engellerseniz dönecek mesajdır. Veya siz uygulamaların "access token" içeriğinize erişimini kısıtlarsanız dönecek mesajdır.
Genel olarak Http 400 durum kodu ile dönerler.
OAuth 2.0 üzerine kurulu protokoller nelerdir ?
OpenID Connect
UMA 2.0
IndieAuth
OpenID Connect
Kısaca bahsetmek gerekir ise Oauth protoklü üzerinde çalışmaktadır amacı aynı OpenId 2.0 gibi kimlik doğrulama işlemini yapmaktır. Artı olarak OpenId Connect son kullanıcı bilgilerini şifreleyen protokoldür. Daha detaylı cevap için şu videoyu inceleyiniz;
https://youtu.be/Kb56GzQ2pSk
UMA 2.0
Burada son kullanıcının kişisel verilerine kimin ve nasıl erişilebileceğini denetlenir. Ayrıca burayı bir kontrol noktası olarak da görebiliriz gelen isteklerin hangi bilgilere ihtiyacı olduğu belirlenir ve yetkili kullanıcı tarafından izin verildiği takdirde sadece gerekli olan bilgiler verilir .
IndieAuth
Bir kimlik doğrulama protokolü olan IndieAuth diğerlerinden farklı olarak bu işi Url ile yapmaktadır. Çalışma mantığı ise kullanıcılara verilen Url'e tıklanması ile kimlik doğrulaması yapmasıdır.
Kodlanma Örneklerini Görmek İçin Tıklayabilirsiniz.
https://oauth.net/code/
Son düzenleme:



