OAuth 2.0 ile Bir Bakıp Çıkıcam
Bu yazımda OAuth 2.0 protokolüne değinmeye çalıştım, uygulamalı örneklerini ilerleyen zamanlarda paylaşma düşüncesindeyim. Keyifli okumalar dilerim.
Nedir OAuth 2.0 ?
OAuth 2.0, web API’lerine uygun şekilde korunan kaynaklara güvenli erişim sağlayan bir güvenlik standartıdır. OAuth 2.0, bir framework değildir, sadece uygulamalar arasında yetkilendirme amacı ile oluşturulmuş protokoldür.
Tam anlamıyla OAuth 2.0, bir kaynağı kontrol eden bir kişinin, bir uygulamanın kendi adına bu kaynağa erişmesine izin vermesine izin veren bir temsilci protokolüdür. Uygulama kaynağın sahibinden yetki talep eder ve bir jeton alarak kaynağa erişmek için kullanabilir.
Neden OAuth 2.0 ?
Örneğin, bir fotoğraf depolama hizmetimizin ayrıca bir tişört baskı hizmetimizin olduğunu ve depomuzdaki fotoğraflarımızı tişört üzerine bastırabileceğimizi varsayalım.
Ayrıca depolama hizmetimizde baskı hizmetimizin nasıl konuşacağını bildiği bir API var. İki hizmetin farklı şirketler tarafından işletilmesi dışında bir sorun yok :) , yani depolama hizmetindeki hesabımızın, baskı hizmetimizdeki hesabımızla hiçbir bağlantısı yoktur.
Farklı hizmetleri kullanarak fotoğraflarımıza erişim yetkisini vererek bu sorunu çözmek için OAuth’u kullanabiliriz.
Daha önce bir Facebook uygulaması kullandıysanız veya Google ile bir web sitesinde oturum açtıysanız, Tebrikler ! OAuth kullandınız.
OAuth 2.0 da Roller Nelerdir ?
Kendi örneğimizden yola çıkarak protokol üzerindeki rolleri açıklamaya çalışalım ;
Resource Owner: Fotoğraflarının depolama hizmetinden erişilmesine yetki veren kaynak sahibidir.
Resource Server: Fotoğraflarımızın verdiğimiz yetkiye bağlı olarak sunan depolama hizmetimiz.
Client : Yetkilendirilmek üzere Resource Owner ‘dan izin isteyen uygulama olan tişört baskı hizmetimiz.
Authorization Server: Verdiğimiz yetkiye bağlı olarak kaynaklara erişim izni olan yetkilendirme anahtarlarini uretir.
OAuth 2.0 Yaşam Döngüsü
Tekrardan örneğimizden yola çıkacak olursak ;
1-) Tişört baskı uygulmamız (Client), Fotoğrafların sahibi olan bizden (Resource owner) yetkilendirilme isteginde bulunur(Authorization Request).
2-) Baskı uygulamamız bizden yetkilendirme alır(Authorization Grant)
3-) Baskı uygulamamız yetkilendirme iznini kullanarak, Authorization servera giris yapar (authentication) ve Authorization server dan token isteginde bulunur.
4-) Authorization server, baskı uygulamamızı bir kimlik dogrulamasindan gecirir, yetkilendirme iznini dogrular ve token verir.(Access Token)
5-) Baskı uygulamamız verilen tokeni kullanarak, fotoğraf depolamamızdan yetkilendirilmis icerigi ister.
6-)Fotoğraf depolama uygulamamız verilen yetkiye göre doğrulama yapar ve fotoğraflarımıza erişim verir.(Protected Resource)
Kaynaklar :
Okuduğunuz için teşekkürler, bir sonraki yazımda görüşmek üzere :)