obenplus.com | oben+ | Hikayesi bol bir yazılımcının kaleminden, teknoloji dünyasını en önemli ve en ince ayrıntısına kadar takip etmek, bir yazılımcının hayatını, yaşantısını gözlemlemek isteneyenler için...

All posts tagged authentication


Günümüzde orta ölçekli firmalarda ve bir çok kurumsal web uygulamasında kullanılıyor Spring. Her firmanın kendine göre bir mimarisi oluyor. Çoğunluk halen SOAP üzerinden iletişimde kalmayı tercih etse de -haklı sebepleri de var- artık trend REST üzerine kaymakta. (Rest ile ilgili yazılarımdan birine buradan, diğerine buradan ulaşabilirsiniz.)

Spring Boot ise popülerleşme yolunda büyük yol katetti bile. Peki nedir bu Spring Boot ? Spring Boot tek amaçlı frameworklerle ya da basmakalıp kodları ve ayar işlerini neredeyse ortadan kaldıran devingen dillerle ilişkilendirebileceğiniz bir kod yazma yaklaşımıdır. Bakınız bunu ben demiyorum, bunu Pivotal’ın danışman ürün pazarlama müdürü Pieter Humphrey diyor 🙂

Ben de bugün kolları sıvadım, güzel bir blog yazısı yazmaya karar verdim bu konuyla ilgili.  Şöyle bir senaryomuz var : Bir api katmanımız olacak ve bu katmana kullanıcılarımız login olarak api üzerindeki metodları token bazlı koşabilecekler. Burada karıştırmamamız gereken bir nokta, bu yazımda, Oauth ya da Oauth2 üzerine bir access_token mantığından bahsetmiyoruz. Çünkü bizim senaryomuzda, 3rd party bir client üzerinden erişim olmayacak. Biz API mizi yazacağız ve kurumumuzun Web uygulaması da Mobil uygulaması da aynı api üzerinden çalışacak.

Konumuzun temelini authorization süreçleri oluşturduğundan, aşağıdaki lifecycle ı dikkatle incelemenizi rica ediyorum. Aslında yapmak istediğimiz şey tam olarak da bu.

authBizim örneğimizde, /api/v1/user pathine erişmek isteyeceğiz. Bu path, sadece ROLE_ADMIN yetkisine sahip kişilerin görebileceği bir path. Uygulamamızın token bazlı süreci işletirken buna uygun çalışması son derece kritik.

Akış ise şu şekilde olacak;

  • Kullanıcı /api/v1/user pathine erişmeye çalışır
  • AuthenticationServer kullanıcının 401.UNAUTHORIZED olduğunu döner. Çünkü bu pathe ulaşabilmek için bir token gerekmektedir.
  • Bu sefer token almak için /api/v1/login pathine headerda username ve password değişkenlerimiz gönderilir.
  • AuthenticationServer 200.OK döner ve headerda token değerini bildirir.
  • Artık bu token değeri belirli bir rol için yetkiye sahip ve tekrar /api/v1/user ı çağırabiliriz

 

Böyle bir yapı kurabilmek için öncelikle yapmamız gereken SpringBoot uygulamamızı Maven in de yardımıyla kurmak.

Read more