// Requires: System.IdentityModel.Tokens.Jwt (NuGet)
using System.IdentityModel.Tokens.Jwt;
using System.Security.Claims;
using System.Text;
using Microsoft.IdentityModel.Tokens;
var secret = "your-super-secret-256-bit-key";
var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret));
var claims = new[]
{
new Claim(JwtRegisteredClaimNames.Sub, "1234567890"),
new Claim(JwtRegisteredClaimNames.Name, "Test User"),
new Claim(JwtRegisteredClaimNames.Iat, DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString(), ClaimValueTypes.Integer64)
};
// Create and Sign
var token = new JwtSecurityToken(
issuer: "your-issuer",
audience: "your-audience",
claims: claims,
expires: DateTime.UtcNow.AddHours(1),
signingCredentials: new SigningCredentials(key, SecurityAlgorithms.HmacSha256)
);
string tokenString = new JwtSecurityTokenHandler().WriteToken(token);
Console.WriteLine(tokenString);
// Requires: go get github.com/golang-jwt/jwt/v5
package main
import (
"fmt"
"github.com/golang-jwt/jwt/v5"
"time"
)
var secretKey = []byte("your-secret")
func main() {
claims := jwt.MapClaims{
"sub": "1234567890",
"name": "Test User",
"iat": time.Now().Unix(),
"exp": time.Now().Add(time.Hour * 1).Unix(),
}
// Create and Sign
token := jwt.NewWithClaims(jwt.SigningMethodHS256, claims)
tokenString, err := token.SignedString(secretKey)
if err != nil {
panic(err)
}
fmt.Println(tokenString)
}