JWT Authorize Role

Semih Yücel
2 min readDec 18, 2020

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.

Anlaşılır olması için model içinden değil manuel olarak rol ismi yazılmıştır

Birde yetki rolü Costumer olarak tanımladığımız metodumuza rol kriteri verelim.

Role Costumer biz Admin yetki ile token almıştık

Gelelim yaptığımız küçük değişikliği test etmeye, farklı API test uygulamaları var ben postman ile test edeceğim.

Gördüğünüz gibi yetki hatası verdi =)

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.

--

--