JWT Authorize Role
Merhabalar;
Son zamanlar kimlik doğrulama yöntemleri ile bazı denemeler yapıyorum. Bu yazımda JSON Web Token ile wep api(.net core) projesinde token aldığımız ve aldığmız token ile controller altında bulunan bazı metotlarımıza yetki dahilinde nasıl erişebiliriz bunlarla ilgili kısa bilgiler verceğim.
JWT token alma ile ilgili zaten çok sayıda makale var bunları tek tek yazmayacağım, ben rolleri nasıl tutarız bundan bahsetmeye çalışacağım.
JwtSecurityToken
Token oluşturma isteği göndermeden önce JwtSecurityToken modeli’ni new olarak türeterek WriteToken ile token isteğinde bulunabiliyoruz. Aslında bütün olay burada başlıyor.
Bildiğinizi varsayarak JwtRegisteredClaimNames altında bazı standart Claims nesneleri mevcuttur (sub,UniqName …). ancak standart nesneler arasına Role adında bir nesne mevcut değildir, Bunu İçin olması gereken nesne başlıkları aşağıdaki gibi talepte bulunmamız gerekiyor.
{
"iss": "https://www.jerriepelser.com",
"aud": "blog-readers",
"sub": "123456",
"exp": 1499863217,
"roles": ["Admin", "SuperUser"]
}
Aşağıdaki örnekte ise .net core da new Claim(ClaimTypes.Role, “Admin”) Authorize Attribute’nin anlayacağı bir rol gönderdik.
Birde yetki rolü Costumer olarak tanımladığımız metodumuza rol kriteri verelim.
Gelelim yaptığımız küçük değişikliği test etmeye, farklı API test uygulamaları var ben postman ile test edeceğim.
Tüm yaptığımız işlemler bu kadar, çok farklı kimlik doğrulama ve yetki kontrolü yapıları bulunmaktadır. ancak sonuç hepsi aynı kapıya çıkıyor.
Örneğin küçük bir senaryomuz olsun, dosya indirme işlemlerini yaptığımız metoda hangi yetkideki kullanıcılar bağlana bilir veya ilgili metodu çalıştırabilir gibi.