How to create the jwt token

Navid ❤️ একদম ঠিক — আমরা আবার শুরু করি।
এইবার একদম ১-২-৩ করে, গল্পের মতো বুঝাই।


🎯 বড় ছবি আগে

JWT = একটা ডিজিটাল আইডি কার্ড

তুমি login করলে server তোমাকে একটা আইডি কার্ড দেয়।
তারপর তুমি যেখানেই যাবে (API call করবে), ওই কার্ড দেখাবে।


🧍‍♂️ ধরি তুমি login করলে

User:

Email: navid@xyz.com
Role: Writer

Password ঠিক।

এখন server বললো:

ঠিক আছে, এই নাও তোমার ID card (JWT token)


🥇 Step 1: Claims বানানো (ID card এর তথ্য লেখা)

এই অংশ:

var claims = new List<Claim>
{
    new Claim(ClaimTypes.Email, user.Email),
    new Claim(ClaimTypes.NameIdentifier, user.Id)
};

foreach (var role in roles)
{
    //can have a multiple role
    claims.Add(new Claim(ClaimTypes.Role, role));
}

এটা কি করছে?

ID card এর ভিতরে লিখছে:

  • তোমার Email
  • তোমার UserId
  • তোমার Role

Example ভিতরে থাকবে:

Email: navid@xyz.com
UserId: 123
Role: Writer

👉 Claims = ID card এর তথ্য


🥈 Step 2: Secret Key দিয়ে Sign করা

var key = new SymmetricSecurityKey(
    Encoding.UTF8.GetBytes(configuration["Jwt:Key"]));

এটা হচ্ছে security seal।

Real life example:

তোমার ID card সরকার সিল মেরে দিলো।

যদি কেউ ID card পরিবর্তন করে:

→ Seal match করবে না
→ Invalid ধরা পড়বে

এটাই Signing।


🥉 Step 3: Expiry দেওয়া

expires: DateTime.Now.AddMinutes(15)

মানে:

এই ID card ১৫ মিনিট valid।

তারপর expire।

Security জন্য।


🏁 Step 4: Token বানানো

var token = new JwtSecurityToken(...)
return new JwtSecurityTokenHandler().WriteToken(token);

এটা string বানিয়ে client কে দিচ্ছে।

Client পাবে এমন কিছু:

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

🎬 এখন পুরো flow দেখো

1️⃣ Login করলো
2️⃣ Password verify হলো
3️⃣ Token বানানো হলো
4️⃣ Client token পেল

তারপর client যখন call করবে:

GET /api/regions
Authorization: Bearer eyJhbGciOi...

Middleware কি করবে?

  • Secret key দিয়ে verify করবে
  • Expiry check করবে
  • Claims পড়বে
  • Role check করবে

🧠 এখন সহজ ভাষায়

Code PartReal Life Meaning
ClaimsID card এর তথ্য
Secret Keyসরকারী সিল
Expiryমেয়াদ
JWT StringID card

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top