OAuth 2.0 Yetkilendirme

OAuth 2.0, korunan kaynaklara erişimi yetkilendirmek için fiili standart haline gelmiş bir yetkilendirme çerçevesidir. Üçüncü taraf uygulamaların, kullanıcının kimlik bilgilerini ifşa etmeden kullanıcı verilerine erişmesine olanak tanır. Şifreleri paylaşmak yerine, hizmetler token'lar sağlar.

Arka Plan

Diyelim ki Google hesabınızdaki verilere erişmesi gereken bir üçüncü taraf uygulama kullanmak istiyorsunuz. Bu üçüncü taraf uygulamaya Google kullanıcı adınızı ve şifrenizi vermek istemezsiniz, değil mi? İşte OAuth burada devreye girer. Google kimlik bilgilerinizi paylaşmadan bu uygulamaya Google verilerinize erişim izni vermenizi sağlar.

OAuth 2.0 using LoadFocus

OAuth 2.0'ın Temelleri

OAuth 2.0, web uygulamaları, masaüstü uygulamaları, cep telefonları ve oturma odası cihazları için belirli yetkilendirme akışları sağlarken istemci geliştirici basitliğine odaklanır. İşte basitleştirilmiş bir açıklama:

  • Kaynak Sahibi: Bir uygulamanın hesabına erişmesine izin veren kullanıcı. Uygulamanın kullanıcının hesabına erişimi, verilen yetkilendirmenin "kapsamı" ile sınırlıdır (örn. belirli bir veri türünü okuma veya yazma).

  • İstemci: Kullanıcının hesabına erişmek isteyen uygulama. Bunu yapabilmesi için kullanıcı tarafından yetkilendirilmesi ve yetkilendirmenin API tarafından doğrulanması gerekir.

  • Kaynak Sunucusu: Kullanıcı hesaplarını barındıran sunucu. Erişim token'ları kullanarak korunan kaynak isteklerini kabul edebilir ve yanıtlayabilir.

  • Yetkilendirme Sunucusu: Bu sunucu kullanıcının kimliğini doğrular ve ardından uygulamaya erişim token'ları verir.

OAuth 2.0 Akışları

Farklı uygulama türleri ve kullanım senaryoları için birkaç "akış" veya "yetkilendirme türü" vardır:

  • Authorization Code (bir web sunucusunda çalışan uygulamalar için): Bu, özellikle web uygulamaları için en yaygın akıştır. Kullanıcıyı hizmete yönlendirmeyi içerir ve burada giriş yaparlar. Giriş yaptıktan sonra, uygulamanın bir erişim token'ı ile değiştirebileceği bir yetkilendirme koduyla uygulamaya geri yönlendirilirler.

  • Implicit (bir tarayıcıda çalışan uygulamalar için): Bu akış, tek sayfa uygulamalar gibi kullanıcı aracısı tabanlı uygulamalar içindir ve erişim token'ı ek bir yetkilendirme kodu değişim adımı olmadan hemen döndürülür.

  • Resource Owner Password Credentials: Bu akış, uygulamanın kullanıcının kullanıcı adı ve şifresini doğrudan sağlamasına olanak tanır. Kullanıcının kimlik bilgilerinin paylaşılmasını içerdiğinden yalnızca güvenilir uygulamalar için önerilir.

  • Client Credentials: İstemcinin kendisinin kaynak sahibi olduğu durumlarda kullanılır; örneğin istemci bir arka plan hizmeti olduğunda.

Token'lar

Kullanıcının kimlik bilgilerini kullanmak yerine, OAuth 2.0 token'ları kullanır. İki tür vardır:

  • Erişim Token'ı: Uygulamanın kullanıcı adına API istekleri yapmasına olanak tanır. Kısa ömürlüdür.

  • Yenileme Token'ı: Orijinal erişim token'ının süresi dolmuşsa yeni bir erişim token'ı elde etmek için kullanılabilir. Erişim token'ından daha uzun ömürlüdür.

Güvenlik

OAuth 2.0, güvenlik için SSL/TLS'ye dayanır. İstemci, yetkilendirme sunucusu ve kaynak sunucusu arasında veri gizliliğini sağlar. Saldırganlar bir erişim token'ını ele geçirmeyi başarsalar bile, süresinin dolmasının (genellikle kısa bir süre) ötesinde veya verildiği kapsamın dışında kullanamazlar.

Sonuç

OAuth 2.0, üçüncü taraf uygulamaların kullanıcı kimlik bilgilerini ifşa etmeden kullanıcı verilerine erişmesini sağlayan güçlü ve esnek bir çerçevedir. Modern web'de vazgeçilmez bir araç haline gelmiştir ve kullanıcılara ve geliştiricilere çeşitli hizmetler ve uygulamalar arasında izinleri vermenin ve yönetmenin güvenli ve verimli bir yolunu sunar.