.Net Core Eğitimleri

14- ) JWT Token ile Login

JWT Token

Haberleşme ihtiyacı duyan 2 ya da daha fazla sistem arasında güvenliği sağlamak ve veri taşımak amacı ile kullanılır. Jwt token json veri yapısını kullanır, url ile taşınabilir, cookie ihtiyacını ortadan kaldırır  ve HTTP session gereksinimi zorunlu olmaktan çıkarır. Jwt token oluşturmak için güvenlik kodu, expire tarihi ve body diyebileceğimiz bilgileri barındıran kısımın belirlenmesi temel olarak yeterli olacaktır. Güvenlik kodu bu tokenin doğruluğunun anlaşılabilmesi için gereklidir ve gizli olmalıdır. Token bu güvenlik key ile oluşturulur ve çözümleme yapılırken bu güvenlik key den yararlanılır. Expire tarihi ne zamana kadar geçerli olduğu bilgisini tutar. Geri kalan kısımda ise token içine eklenmek istenen veriler yer alacaktır.

JWT Token’in Projeye Eklenmesi

Kullanıcılar sistemimiz üzerinde oturum açmak istediklerinde, girdikleri kullanıcı adı ve parolayı kontrol edecek ve doğru bilgiler ile giriş yapılmak isteniyor ise bu kullanıcıya özel bir token oluşturacağız. Kullanıcı token aldıktan sonra her request’i için header alanında bu tokeni göndererek apimiz üzerindeki fonksiyonları kullanabilecek. Jwt token ile login işlemleri yapmak için aşağıdaki şekilde gerekli dosyaları oluşturalım.

Öncelikle gerekli modelleri oluşturacağız. Bunun için WebApi projesinde bulunan VM klasörüne sağ tıklayarak Add–>Class yolunu izleyerek sırası ile LoginModel ve TokenModel isminde iki adet sınıf oluşturalım, daha sonra içeriklerini aşağıdaki şekilde düzenleyelim.

LoginModel.cs

TokenModel.cs

Daha sonra WebApi projemizden bulunan Interfaces klasörüne sağ tıklayalım ve Add –> Class yolunu izleyerek ITokenController isminde bir dosya oluşturalım. Daha sonra bu dosyanın içeriğini aşağıdaki şekilde düzenleyelim. Token controllerımızın içermesi gereken metotları bu interface ile belirlemiş olduk.

Şimdi Controller klasörüne sağ tıklayalım ve Add –> Class diyerek TokenController isminde bir dosya oluşturalım. Daha sonra bu dosyanın içinide aşağıdaki şekilde düzenleyelim.

Yukarıdaki işlemleri yaptığınızda sıra appsettings.json dosyasını düzenlemeye geldi. WebApi projesi içinde bulunan dosyayı açarak içeriğini aşağıdaki şekilde düzenleyelim.

Connection string’i, Issuer kısmını kendi bilgileriniz ile güncellemeyi unutmayın.

Son olarak WebApi projesinde bulunan Startup.cs dosyasını açalım ve ConfigureServices metodunun içinde en üst kısma aşağıdaki kodu yazalım.

Token sınıfı haricinde kalan sınıflara token olmadan erişimi kısıtlamak için ilgili sınıfları açarak class tanımlamalarının üzerine aşağıdaki kodu ekleyebilirsiniz.

Roles kısmını silerseniz tokeni olan herkes o sınıfa erişebilir, rol kısmındaki bilgiyi sistemde roles tablosunda kayıtlı bilgilerden seçerek tekli ya da çoklu şekilde yazabilirsiniz.

Tüm işlemleri bitirdiğinizde sisteminize login ve rol kontrolü yeteneklerini eklemiş olacaksınız.

Projenin buraya kadar olan kısmı ile ilgili sorun yaşıyorsanız bu link ile github üzerinden projeyi indirebilir ve kendi yazdığınız kodlar ile karşılaştırabilirsiniz. Sorularınız için yorum kısmını kullanabilir ya da mail adresim üzerinde benimle iletişime geçebilirsiniz.
Mail Adresim : mehmetalierol@windowslive.com

<- Önceki Post – Sonraki Post ->

.Net Core Eğitimleri

1) .Net Core Nedir?

.Net Core

.Net Core, Microsoft ‘un açık kaynak kodlu olarak piyasaya sürdüğü bir “framework” tür.

Core öncesinde Microsoft tabanlı ortamlarda geliştirdiğiniz uygulamaları başka platformlar üzerinde koşturmak ya mümkün değildi ya da ekstra uygulamalar ve yöntemler gerektiriyordu. Microsoft, .Net Core ile birlikte bu sorunu ortadan kaldırmakla kalmadı aynı zamanda .Net Framework ile çalışırken karşılaşılan çeşitli sorunları da temizledi diyebiliriz. Örneğin dependency injection yapmak için Core öncesinde 3. parti çözümler kullanmak ve bir sürü ayar yapmak gerekebiliyordu ama artık Core içerisinde dependency injection gibi daha pek çok hayat kurtaran özellik gömülü bir şekilde geliyor. Olay sorunların giderilmesi ile sınırlı kalmıyor, bunların yanında performans üzerinde ciddi iyileştirmeler yapılmış ve tabi tüm bu iyileşmenin altında açık kaynak kod topluluğunun ciddi bir etkisi olduğunu söylemek gerekiyor. Bu link ile önceki sürümler ve .Net Core arasında performans karşılaştırmalarına göz atabilirsiniz.

Artık microsoft tabanlı bir işletim sistemi kullanmadan, visual studio geliştirme ortamına ihtiyaç duymadan gerekli geliştirmeleri yapabilir ve geliştirdiğiniz uygulamaları yine microsoft platformlarına bağımlı kalmaksızın başka ortamlarda çalıştırabiliriz. Core ‘un sürümlerine, sürümler içerisinde ne gibi farklılıkların bulunduğuna Microsoft’un sitesinden bakabilir ve gelişimi detaylıca görebilirsiniz.

Kısaca .Net Core’un temel özelliklerinden bahsettik, fazla detaya girerek gereksiz bilgiler vermek istemiyorum, daha detaylı bilgiye sahip olmak isteyenler mutlaka Microsoft’un sitesinden araştırma yapmalı ve gelinen son noktayı tecrübe etmeli.

Yazı Serisinin Amacı

Bu eğitim adım adım kurumsal bir backend projesinin nasıl yapılacağı ile ilgili bilgi vermek amacı ile hazırlanmıştır. Projeyi en baştan ekran görüntüleri ile birlikte oluşturacağız ve aşağıdaki özellikleri içerecek şekilde tamamlayarak hep birlikte yayına alacağız. Daha sonrasında angular 6 ile frontend tarafında geliştirmeler yapacağız. Ancak o başka bir ders konusu altında olacak. Aşağıda bulunan adımları içeren örnek projeyi bugün itibari ile bitirdim fakat yazıları yazmak ve yayınlamak biraz vaktimi alacak, bu nedenle eğer aşağıda bulunan konulardan herhangi birine ihtiyacınız var ise benimle iletişime geçebilirsiniz, örnek kodları sizinle paylaşabilirim.

Projenin Tanıtımı

Proje Adımları;
1- )    Projemizin oluşturulması ve gereklilikler
2- )    Projenin ana bilgilerini saklayacak common katmanının oluşturulması
3- )    .Net Core Identity ‘nin aktif hale getirilmesi ve code first ile veritabanı tasarımı
4- )    Data Transfer Object (Dto) ‘ların oluşturulması ve Auto Mapper
5- )    Repository ve UnitofWork tasarım desenlerinin eklenmesi
6- )    Web Api projesinin oluşturulması
7- )    ILogger ile dosya sistemine loglama ve AutoHistory ile değişiklik geçmişi
8- )    Usermanager ve Rolemanager ile Identity üzerinde kullanıcı işlemleri
9- )    Jwt token alt yapısı ile kullanıcı authentication alt yapısının kurulması
10- ) Rol bazlı authorization işlemleri
11- ) Web cache kullanımı ve projeye implemente edilmesi
12- ) Web api üzerinde paging alt yapısının kurulması
13- )  SignalR ile canlı veri akışının sağlanması
14- )  Unit testlerin yazılması ve Moq kullanımı
15- ) Swagger

<- Önceki Post – Sonraki Post ->