Generate JWT Tokens in C# (.NET)
Complete code tutorial with examples and best practices
[ Code Example - Quick Summary ]
Language: C#
What: Generate secure JWT tokens in C# using System.IdentityModel.Tokens.Jwt for ASP.NET Core applications. Ideal for Web API authentication, Blazor apps, and microservices authorization.
Try it: Use our interactive Jwt-tokens generator or integrate this code into your C# application.
Generate secure JWT tokens in C# using System.IdentityModel.Tokens.Jwt for ASP.NET Core applications. Ideal for Web API authentication, Blazor apps, and microservices authorization. Looking for other languages? Check our code examples in PHP , JavaScript , Python , Java , C++ , Ruby and Go or use our interactive web generator.
C# Code Example
using System;
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using Microsoft.IdentityModel.Tokens;
public class JwtGenerator
{
private const string SecretKey = "your-256-bit-secret-key-minimum-32-characters";
private const string Issuer = "https://yourdomain.com";
private const string Audience = "https://yourdomain.com";
public static string GenerateToken(string userId, string username, string role)
{
var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(SecretKey));
var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256);
var claims = new[]
{
new Claim("user_id", userId),
new Claim("username", username),
new Claim("role", role),
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())
};
var token = new JwtSecurityToken(
issuer: Issuer,
audience: Audience,
claims: claims,
expires: DateTime.UtcNow.AddHours(1),
signingCredentials: credentials
);
return new JwtSecurityTokenHandler().WriteToken(token);
}
public static ClaimsPrincipal ValidateToken(string token)
{
var tokenHandler = new JwtSecurityTokenHandler();
var key = Encoding.UTF8.GetBytes(SecretKey);
var validationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true,
ValidateIssuerSigningKey = true,
ValidIssuer = Issuer,
ValidAudience = Audience,
IssuerSigningKey = new SymmetricSecurityKey(key)
};
return tokenHandler.ValidateToken(token, validationParameters, out _);
}
public static void Main()
{
string jwt = GenerateToken("123", "john_doe", "admin");
Console.WriteLine($"JWT: {jwt}");
var principal = ValidateToken(jwt);
Console.WriteLine($"User: {principal.FindFirst("username")?.Value}");
}
}
[EXPLANATION]
ASP.NET Core uses System.IdentityModel.Tokens.Jwt for JWT operations. The JwtSecurityToken class represents tokens, while JwtSecurityTokenHandler handles serialization and validation. Use TokenValidationParameters to configure strict validation rules. Always validate issuer, audience, lifetime, and signing key.
Expected Output
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjoiMTIzIiwidXNlcm5hbWUiOiJqb2huX2RvZSIsInJvbGUiOiJhZG1pbiIsImp0aSI6IjEyMzQ1Njc4LTEyMzQtMTIzNC0xMjM0LTEyMzQ1Njc4OTBhYiIsImlzcyI6Imh0dHBzOi8veW91cmRvbWFpbi5jb20iLCJhdWQiOiJodHRwczovL3lvdXJkb21haW4uY29tIiwiZXhwIjoxNjgwMDAzNjAwfQ.signature
Common Use Cases
- ASP.NET Core Web API authentication
- Blazor WebAssembly authentication
- Azure Functions authorization
- .NET microservices communication
- Windows desktop app authentication
Important Notes
-
Install:
Microsoft.IdentityModel.TokensNuGet package - Use configuration files for secret keys (appsettings.json)
-
Add
JwtBearerauthentication in Startup.cs -
Use
SecurityAlgorithms.RsaSha256for asymmetric signing - Consider Azure Key Vault for secret management
Try Our Interactive Generator
Don't want to write code? Use our free web-based Jwt-tokens generator with instant results.
TRY JWT-TOKENS GENERATOR →Other Programming Languages
View Jwt-tokens generation code examples in PHP
View Jwt-tokens generation code examples in JavaScript
View Jwt-tokens generation code examples in Python
View Jwt-tokens generation code examples in Java
View Jwt-tokens generation code examples in C++
View Jwt-tokens generation code examples in Ruby
View Jwt-tokens generation code examples in Go