.Net Core Jwtbearer Token Kontrolü (Help)
-
Merhaba arkadaşlar.
.Net Core da geliştirmeye başladığım restful api projemde token kontrolü yapmak istiyorum.
login kontrolü sonrasında token yaratıyorum. ancak bunu action result larda nasıl kontrol edeceğimi bilmiyorum.
token oluşturduktan sonra bunu veritabanına yazmak gerekiyor mu?
action result metodlarının üstünde [Authorize] anahtarını kullanmak yetiyor mu?
yoksa kontrolü kendimiz mi sağlamalıyız. Bunun için validate metodu mu yazmalıyım?
Örneklerle bana durumu anlatabilecek bir arkadaş var mı?
Şimdiden teşekkür ederim.
-
Hocam Jwt stateless bir yapıya sahip.Authorize attribute ile kontrol eklemen yeterli.
Edit:
Veritabanına yazmana gerek yok her requestte kendisi otomatik doğrulanıyor.
esinti tarafından 31/Eki/23 15:24 tarihinde düzenlenmiştir -
alttaki makale derdine derman olacaktır.
jwt tokenı database kaydetmen gerekmez. performans falan ölür biter.
kendi imzanla loginde yarattığın tokenı actionresultların başına [Authorize] filterını ekleyerek valid işleminden geçirebiliyorsun. Ardından tüm istekleri bir middleware ile süzgeçten geçirirsen eğer custom işlerini orada rahatça görebilirsin
-
https://localhost:7211/api/Auth/Login
token oluşturuyorum.
sonra farklı bir kontroller da
[Authorize] anahtarını ekliyorum
yaratmış olduğum token'ı postman üzerinden
farklı bir contreller üzerinden kullanmaya çalışıyorum (https://localhost:7211/api/Musteriler)
sonuç
401Unauthorized hatası alıyorumneyi yanlış yapıyorum -
program cs içerisinde
app.UseAuthentication();
eklemediğim için 401 alıyormuşum.
-
Meraktan soruyorum peki jwt kullandığımız bir sistemde bir hesap tek cihazdan auth olacak sekilde nasıl kurarız sistemi, baska bir cihazdan auth olunca öncekinin gecersiz olması lazım, db ye kaydetmeden nasıl yapıyoruz?
-
blackseaboy28 bunu yazdı
Meraktan soruyorum peki jwt kullandığımız bir sistemde bir hesap tek cihazdan auth olacak sekilde nasıl kurarız sistemi, baska bir cihazdan auth olunca öncekinin gecersiz olması lazım, db ye kaydetmeden nasıl yapıyoruz?
Login olurken cihazdan bir uniq değer alırsın ve bunu tokenın içine basıp sonra da Redis atarsın her requestte kontrol edersin kullanıcı ve cihaz aynı mı diye.
-
blackseaboy28 bunu yazdı
Meraktan soruyorum peki jwt kullandığımız bir sistemde bir hesap tek cihazdan auth olacak sekilde nasıl kurarız sistemi, baska bir cihazdan auth olunca öncekinin gecersiz olması lazım, db ye kaydetmeden nasıl yapıyoruz?
bu senin yapmak istediğin algoritmaya bağlı. bi redis'e bir static array'e lastLoginTime gibi bir değer atarsın. JWT'nin iat veya createdAt gibi bir payload'i üzerinden burayi güncelliyip JWT'i Auth'u reject edersin. @esinti de benzer bir client check önermiş. Fakat tamamen stateless olmaz bu doğrulama. 2. bir state oluşursa 1. kill olsun durumunu talep ediyorsun sonuçta.