Bu makalemde front-end ve back-end arasında web api bearer token  authentication kullanımından bahsetmek istiyorum. İlk olarak nedir bu token diyerek başlayıp avantajlarından bahsettikten sonra örnek bir ASP .NET Web Api Üzerinden uygulama ile devam edeceğim.

 

Nedir Bu Token ve Avantajları ?

Kısaca özetlemek gerekirse token’ı anahtar olarak düşünebiliriz. Yani biz back-end serverımıza kullanıcı adımızı ve şifremizi doğrulamak için gönderdiğimizde bize bu doğrulamaya karşılık bir token ( Anahtar ) veriyor. Sonrasında istek gerçekleştirmek istediğimizde bizden kullanıcı adı şifre yerine bu anahtarı bekliyor ve gerekli güvenlik kontrollerini sağlıyor. Burada böyle bir yapının kullanılmasının bize sağladığı avantajlardan başlıcaları;

  • Mobil uygulamalar ile entegrasyonu
  • Farklı uygulamalar ile doğrulamanın paylaşılabilmesi
  • Durumsuz olması  ( Stateless ) ve sonucunda daha kolay ölçeklenebilir olması
  • Front-end ile back-end arasında gevşek (loosely coupled) bir yapı sağlaması

Uygulama İle Devam Edelim…

Örnek uygulamamızı oluştururken iki tane projeye ihtiyacımız olacak. Bir tanesi boş web-api projemiz ikincisi ise boş bir web projesi olacak.

Web Api Bearer Token  Authentication Projesi

Boş web-api projemizi “OrnekWebApi” şeklinde adlandırıp başlayalım.Projemize kullanacağımız paket eklentilerini yükleyelim. Bunlar için;

Install-Package Microsoft.AspNet.WebApi.Owin

Install-Package Microsoft.Owin.Security.OAuth

Install-Package Microsoft.Owin.Cors

Install-Package Microsoft.Owin.Host.SystemWeb

Paket yüklemelerini gerçekleştirdikten sonra aşağıda şekilde görüldüğü gibi bir klasör yapısı oluşturup içerine “Saglayici” ve “Startup” klasımızı ekleyelim.

projeyapi

Startup klasımız içine aşağıdaki kodları yapıştıralım.

 

Burada yukarıda tanımladığımız assembly ile serverımız ilk çalıştığında çalıştırılacak klasımızı tanımladık.  Configuration kısmında yer alan parametre ise bu çağrılma sırasında host tarafından sağlanmakta. İkinci olarak HttpConfiguration ayarlarımızı yaptıktan sonra App_Start’da yer alan Register metodumuzu bu configrasyon ile çağıracağız.Bu işlemin ardından projemizde yer alan Global.asax.cs dosyamızın bulunmasına gerek kalmamaktadır. Çünkü startup işlemini artık buradan sağlıyoruz. OAuth server ayarlarında tanımladığımız özelliklerden bahsedecek olursak

TokenEndpointPath ile geçerli token alacağımız adresi belirtiyoruz.

AccessTokenExpireTimeSpan ise sağlanan token’ın geçerlilik süresini belirtir.

AllowInsecureHttp ise token requestlerin HTTPS olmayan protokollere açılmasını sağlar.

Şimdi ikinci klasımız olan sağlayıcı klasımız için kodları paylaşalım.

 

Şimdi son olarak Authentication’ı test edebileceğimiz bir controller oluşturup projenin web-api kısmını tamamlamak.”Fatura” isminde boş bir web-api 2 controller oluşturalım.

Burada [Authorize] attribute’i ile get metodumuzun yetkilendirme gerektireceğini belirttik. Buraya kadarki bölümde web-api projemizi tamamladık. Şimdi projemizi test etmek için boş bir web projesi açıp yapılandırmalara devam edelim.

 

Web Projemiz

Boş bir web-mvc projesi açalım. Projemize birtek jquery yüklememiz yeterli.  Ardından aşağıda vereceğim java script kodunu ekleyin.

 

Burada serverdan dönen token’ı local storage kaydettim. Siz farklı bir yapıda kullanabilirsiniz. Index sayfası için kodları paylaşıyorum.

 

 

Giriş yaptığınızda sonuç aşağıdaki gibi olacaktır.

Web Api Bearer Token Authentication

Veri isteği yaptığımızdaki sonuç

getdata

Proje dosyaları github’da mevcuttur.