Merhabalar bugün
ASP.NET'te çalışacağız. Önce
.NET Web API ile bir
Restful web servisi oluşturup sonra
OAUTH 2.0 ile koruyacağız.
OAuth bilmeyenler için açık standartlı bir kimlik doğrulama protokolüdür, genellikle internet kullanıcıları tarafından kendi Google, Microsoft, Facebook, Twitter, One Network v.b. hesaplarının şifrelerini açığa çıkarmadan third party web sitelerine erişmek için kullanılır. Genellikle OAuth kaynağın sahibi adına, kullanıcılara sunucu kaynakları için "güvenli temsili erişim" sağlıyor. Kaynak sahipleri için bir süreç başlatıyor. Bu süreçte kaynak sahiplerinin sunucu kaynaklarına herhangi bir kimlik paylaşımı olmadan üçüncü taraf erişim yetkisi sağlanıyor. Projeye geçecek olursak önce yeni bir
Asp.Net Web Application oluşturuyoruz gelen kısımda
WebAPI seçeneğini seçiyoruz. Projemizi oluşturduğumuza göre hemen projemiz üzerine sağ tıklayarak
NuGet Package Manager’ı açıp Search kısmından
OAuth yazarak çıkacak olan sonuçlar içinden
Microsoft.AspNet.WebApi.Owin,
Microsoft.Owin.Host.SystemWeb ve
Microsoft.Owin.Security.OAuth‘u seçerek projemize kuruyoruz. Şimdi projeye veritabanı yaparak başlayalım. Ben code first yöntemini tercih ederek otobüs bilgileri tutan basit bir veritabanı yapacağım.
Yukarıda veritabanı model classları oluşturdum şimdi ise yazdığım kod ile etkileşim ve bu modelleri temsil için context sınıfı oluşturacağım.
Context sınıfını oluşturduktan sonra api için otomatik oluşturulan valuescontroller sınıfına geliyoruz ve servisimizin metodlarını ekliyoruz.

Namespace dan sonra yazdığımız [Authorize] komutu ile servisimizi browserdan link ile erişimi engelliyoruz.RoutePrefix ile de yolu belirliyoruz. Daha sonra datacontext sınıfından bir obje türetip fonksiyonlarda kullanıyoruz. Bu fonksiyonlar veritabanındaki CRUD işlemleri ile aynı olup isterseniz isimlerini değiştirebilirsiniz. Şimdi Owin Pipeline'ı gerçekleştirmek üzere Startup sınıfını açıyoruz ve aşağıdaki kodları ekliyoruz.
Burada önemli nokta Owin'i bir boru gibi düşünürsek herşeyin bir sırası vardır işlem görürken o yüzden Configuration fonksiyonunun içindeki sıra önemlidir. ConfigureOAuth fonksiyonu içindede alacağımız tokenin yolunu ve kullanım süresini belirliyoruz ve bir provider nesnesi oluşturuyoruz. Şimdi gelelim bu sınıfın kodlarını incelemeye.
Burada da kısıtlayıcı username ve password belirledikten sonra api kısmında her şeyi tamamlıyoruz. Şimdi test zamanı ben test için POSTMAN programını tercih ediyorum.
Görüldüğü üzere veri almak istediğimizde blok yedik. Çünkü önce bir bearer token almamız lazım.
Bunun için POST tipinde /token url’ine Headers’a ve Body’e bir kaç parametre ekleyeceğiz. Headers’e ekleyeceklerimiz:
Header: Accept Value: application/json
Header: Content-Type Value: application/x-www-form-urlencoded
Body’e ekleyeceklerimiz: data tipini x-www-form-urlencoded olarak seçip,
Key: grant_type Value: password
Key: username Value: Emre
Key: password Value: 123456
bilgilerini girdikten sonra POST ediyoruz:
Ve bir gün içinde kullanılmak üzere açılan bearer tokeni aldık. Şimdi bu token ile birde get metodu yazacağız ve servisimize erişebileceğiz.
Get metodunda Headers’e eklenecek parametreler:
Header: Content-Type Value: application/json
Header: Authorization Value: Bearer j3QQ9g8npPS238HNJFm8rhZBV6IE_PhE1fUyDc8Z2b2svsUP0w1mUkcK_DbKGTlewocDAzWTgI7Gloso3LnBqzD7cm7lkKk1SAx3y-_A0x05NNKSk8CBBp7XxWSu8vIoX1SCBWFgGQGmprP453h4uj8y6EuHY9EJi8LFJCfQtWhmvKkWfRH8436LKPrO0QD0eLMqlqFegu6anxwm-nzj2dSLapbM2k45ke3wbDHDxRJs
Bearer kısmından sonra bir boşluk bırakıp tokenimizi yazıyoruz. Sonra çıkan sonuca bakalım.