how to sign a JWT using RS256 with an RSA private key:
using System; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Security.Cryptography; using Microsoft.IdentityModel.Tokens; public class JwtHelper { public string GenerateJwtToken(string issuer, string audience, string subject, DateTime expiry, RSA privateKey) { // Create a signing key using the RSA private key var signingCredentials = new SigningCredentials(new RsaSecurityKey(privateKey), SecurityAlgorithms.RsaSha256); // Create claims for the JWT payload var claims = new[] { new Claim(JwtRegisteredClaimNames.Sub, subject), new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()) }; // Create the JWT token var token = new JwtSecurityToken( issuer: issuer, audience: audience, claims: claims, expires: expiry, signingCredentials: signingCredentials ); // Write the JWT token as a string var jwtTokenHandler = new JwtSecurityTokenHandler(); return jwtTokenHandler.WriteToken(token); } } class Program { static void Main(string[] args) { // Generate RSA private key using (RSA privateKey = RSA.Create()) { // We should set other parameters of the RSA private key here, such as key size, etc. // For simplicity, we omit these details in this example. // Generate JWT token JwtHelper jwtHelper = new JwtHelper(); string issuer = "quickpickdeal.com"; string audience = "quickpickdeal.com"; string subject = "[email protected]"; DateTime expiry = DateTime.UtcNow.AddHours(1); // Token expires in 1 hour string jwtToken = jwtHelper.GenerateJwtToken(issuer, audience, subject, expiry, privateKey); // Print the generated JWT token Console.WriteLine($"Generated JWT token: {jwtToken}"); } } }
So this code show you how to sign JWT tokens using RS256 with an RSA private key in C#.
Here's how we can create a JWT signature using a private key and the RS256 algorithm in .NET:
using System; using System.IdentityModel.Tokens.Jwt; using System.Security.Claims; using System.Security.Cryptography; using Microsoft.IdentityModel.Tokens; public class JwtGenerator { public string GenerateJwtSignature(string issuer, string audience, string subject, DateTime expiry, RSA privateKey) { // Create a signing credentials object using the RSA private key and RS256 algorithm var signingCredentials = new SigningCredentials(new RsaSecurityKey(privateKey), SecurityAlgorithms.RsaSha256); // Create claims for the JWT payload var claims = new[] { new Claim(JwtRegisteredClaimNames.Sub, subject), new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()) // Add more claims as needed }; // Create a JWT token var token = new JwtSecurityToken( issuer: issuer, audience: audience, claims: claims, expires: expiry, signingCredentials: signingCredentials ); // Write the JWT token as a string var jwtTokenHandler = new JwtSecurityTokenHandler(); return jwtTokenHandler.WriteToken(token); } } class Program { static void Main(string[] args) { // Generate an RSA private key using (RSA privateKey = RSA.Create()) { // Generate a JWT token using the private key JwtGenerator jwtGenerator = new JwtGenerator(); string issuer = "example.com"; string audience = "example.com"; string subject = "[email protected]"; DateTime expiry = DateTime.UtcNow.AddHours(1); // Token expires in 1 hour string jwtSignature = jwtGenerator.GenerateJwtSignature(issuer, audience, subject, expiry, privateKey); // Print the generated JWT signature Console.WriteLine($"Generated JWT signature: {jwtSignature}"); } } }
Create a JWT signature using a private key and the RS256 algorithm in .NET.