Sobes.tech
Middle

OAuth kimlik doğrulaması nedir ve nasıl çalışır?

sobes.tech yapay zeka

AI'dan gelen yanıt

OAuth, açık bir yetkilendirme standardıdır. Bir kullanıcının, başka bir hizmette (kaynak sunucusu) depolanan verilerine sınırlı erişim sağlamasına olanak tanır, bu uygulamaya kullanıcı bilgilerini (kullanıcı adı/parola) iletmeden.

OAuth'un çalışma prensibi, kimlik bilgileri yerine "erişim tokenları" verilmesine dayanır. Tipik akış şu şekildedir:

  1. Yetkilendirme isteği: Kullanıcı, kaynak sunucusundan verilere erişim gerektiren üçüncü taraf bir uygulamada işlem yapmaya çalışır. Uygulama, kaynak sunucusunun yetkilendirme sunucusuna bir yetkilendirme isteği başlatır.
  2. Yetkilendirme sunucusuna yönlendirme: Kullanıcı, yetkilendirme sunucusunun sayfasına yönlendirilir.
  3. Kullanıcı doğrulaması: Kullanıcı, yetkilendirme sunucusunda kimlik doğrulaması yapar (eğer yapmamışsa).
  4. Kullanıcı onayı: Yetkilendirme sunucusu, kullanıcıdan üçüncü taraf uygulamaya belirli bir erişim seviyesi vermesi için izin ister (kapsamlar). Kullanıcı, isteği kabul eder veya reddeder.
  5. Yetkilendirme kodunun verilmesi: Kullanıcı onay verirse, yetkilendirme sunucusu kullanıcıyı tekrar üçüncü taraf uygulamaya yönlendirir ve bir "yetkilendirme kodu" sağlar.
  6. Yetkilendirme kodunun erişim tokenına dönüştürülmesi: Üçüncü taraf uygulama, yetkilendirme kodunu aldıktan sonra, bu kodu doğrudan yetkilendirme sunucusuna göndererek bir "erişim tokenu" ve isteğe bağlı olarak bir "yenileme tokeni" ile değiştirir. Bu istek, kullanıcı tarayıcısı dışında gerçekleşir, bu da güvenliği artırır.
  7. Verilere erişim: Üçüncü taraf uygulama, alınan erişim tokenunu kullanarak kullanıcının adına kaynak sunucusuna isteklerde bulunur. Her istek, token'ı başlıkta gönderir.
  8. Token doğrulaması: Kaynak sunucusu, erişim tokenunu doğrular ve geçerliyse ve istenen kapsamlarla uyumluysa, verilere erişim sağlar.

OAuth'un farklı senaryolara uygun birkaç akışı (flows) vardır, örneğin:

  • Authorization Code Flow: En güvenli olan, web uygulamaları için kullanılır.
  • Implicit Flow: Artık kullanılmayan, web uygulamaları için kullanılır.
  • Client Credentials Flow: Kendi kaynaklarına erişen uygulamalar için, kullanıcının kaynakları değil.
  • Resource Owner Password Credentials Flow: Tavsiye edilmez, kullanıcının kimlik bilgilerini uygulamaya iletir.

(Authorization Code Flow örneği)

C#'ta OAuth uygulaması geliştirmek için genellikle ASP.NET Core Identity gibi kütüphaneler, farklı sağlayıcılar (Google, Facebook vb.) veya kendi yetkilendirme sunucunuzu oluşturmak için IdentityServer gibi kütüphaneler kullanılır.