IdentityServer4 Yazı Serisi #9 – Implicit Grant(Flow)

Merhaba,

Bu içeriğimizde IdentityServer4’ün bir başka akış stratejisi olan Implicit Grant‘ı teorik bir şekilde inceliyor olacağız.

Implicit Grant(Flow) Nedir?

Bir önceki makalede ele aldığımız Authorization Code Grant(Flow) iki aşamalı bir doğrulama süreci gerçekleştirmektedir. Implicit grant ise tek adımlı bir şekilde Auth Server’dan access token’ı direkt elde edebilmektedir.

Mobile ve JavaScript temelli SPA(Single Page Application) uygulamalar için daha uygun bir akış türüdür.

Evet… Özellikle Single Page ve mobile uygulamalar için çift aşamalı kimlik doğrulamanın aşağıdaki gibi birkaç ilginç zorluğu söz konusudur;

  • Genellikle SPA ve mobile uygulamalarının güvenlik altyapıları, server tabanlı uygulamalara nazaran önemli ölçüde farklıdır. Dolayısıyla bir web uygulaması için gerçekleştirilebilecek olan akış, SPA ve mobile için platformunun gereği uygun olmayabilir.
  • Tasarlanmış birçok Auth Server CORS politikalarını esnek bırakmamaktadır. Bu durum özellikle SPA’ları negatif etkilemektedir.
  • Mobile ve SPA gibi yazılımları kullanan bir kullanıcının giriş yapabilmesi ve yetkilendirilmesi için uzaktaki farklı bir adrese yönlendirilmesi kullanıcı deneyimi için pek tercih edilebilir bir durum değildir.

İşte bu zorluklardan dolayı SPA ve Mobile tabanlı uygulamalarda genellikle Implicit Grant’ın tercih edilmesi daha doğru olacaktır.

Implicit Grant’ın Stratejisi Nasıldır?

Implicit Grant’ta bir kullanıcı, direkt olarak Auth Server üzerinden yetkilendirilir. Bu yetkilendirme neticesinde kullanıcıya bir access token verilerek API kaynaklarına erişmek için kullanılır.

Şimdi diyagram olarak süreci adım adım yandaki görsel eşliğinde seyredelim;

  • 1 Kullanıcı, uygulama(user agent/Mobile&SPA) üzerinden API’a(secret resource) erişim talebinde bulunarak yetkilendirme sürecini başlatır.
  • 2 Client/user agent kullanıcıyı oturum açma prosedürlerini başlatmak için Auth Server’a yönlendirilir.
  • 3.1 Kullanıcı client’a olan redirect uri bilgisiyle birlikte kullanıcı bilgileri eşliğinde Authorize Endpoint’e istek gönderir.
  • 3.2 Kullanıcı izin sayfasını onaylar ve kimlik bilgileriyle yetkilendirmeyi gerçekleştirir ve access token üretilir.
  • 4 Yetkilendirme başarıyla sonuçlandıktan sonra kullanıcı redirect uri bilgisindeki istemciye yeniden yönlendirilir. Bu yönlendirme esnasında redirect uri query string olarak access token’ı da getirecektir.
  • 5. Tabi bu süreçte client, access token ile birlikte kullanıcının tüm bilgilerini ister. Kullanıcı bunların erişimine onay verdiği için bu bilgiler artık client tarafından elde edilecektir.
  • 6. Haliyle Auth Server client’a istediklerini gönderir.
  • 7. Client API’a access token ile erişim gerçekleştirir.
  • 8 + 9. Üretilen datalar kullanıcıya gönderilir.

Bu akış, client kimlik bilgilerinin gizli tutulmadığı durumlarda oldukça elverişlidir.

İlgilenenlerin faydalanması dileğiyle…
Sonraki yazılarımda görüşmek üzere…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*