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