JWT Authentication in ASP.NET Core

📌 Introduction

Security is one of the most important parts of any application. Today, most modern apps use token-based authentication instead of session-based login.

👉 One of the most popular methods is JWT (JSON Web Token) in ASP.NET Core.

🤔 What is JWT?

JWT (JSON Web Token) is a secure token that is generated after login and used to access protected APIs.

👉 Instead of storing user session on server, JWT stores data in token.

🧠 Simple Flow (Easy Understanding)

🔥 Why JWT is Trending?

🏗️ Step 1: Create Web API Project

dotnet new webapi -n JwtAuthDemo

📦 Step 2: Install Required Package

dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer

⚙️ Step 3: Configure JWT in Program.cs

using Microsoft.AspNetCore.Authentication.JwtBearer;
using Microsoft.IdentityModel.Tokens;
using System.Text;

var builder = WebApplication.CreateBuilder(args);

var key = "ThisIsMySecretKey12345";

builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
    options.TokenValidationParameters = new TokenValidationParameters
    {
        ValidateIssuer = false,
        ValidateAudience = false,
        ValidateLifetime = true,
        ValidateIssuerSigningKey = true,
        IssuerSigningKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key))
    };
});

builder.Services.AddAuthorization();

var app = builder.Build();

app.UseAuthentication();
app.UseAuthorization();

app.MapGet("/", () => "JWT API Running");

app.Run();

🔑 Step 4: Create Token Generator

using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;

public class JwtService
{
    private string key = "ThisIsMySecretKey12345";

    public string GenerateToken(string username)
    {
        var claims = new[]
        {
            new Claim(ClaimTypes.Name, username)
        };

        var keyBytes = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(key));
        var creds = new SigningCredentials(keyBytes, SecurityAlgorithms.HmacSha256);

        var token = new JwtSecurityToken(
            claims: claims,
            expires: DateTime.Now.AddMinutes(30),
            signingCredentials: creds
        );

        return new JwtSecurityTokenHandler().WriteToken(token);
    }
}

🔐 Step 5: Login API (Generate Token)

app.MapPost("/login", (string username, string password) =>
{
    if (username == "admin" && password == "123")
    {
        var jwt = new JwtService();
        var token = jwt.GenerateToken(username);

        return Results.Ok(token);
    }

    return Results.Unauthorized();
});

🔒 Step 6: Secure API

app.MapGet("/secure", () =>
{
    return "This is protected data";
}).RequireAuthorization();

📡 How to Use in Postman

Authorization: Bearer YOUR_TOKEN

🧠 Easy Understanding

🔗 Real-Life Use Cases

🏁 Conclusion

JWT authentication in ASP.NET Core is: