.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 ->