
kit-jwt v2026.7.12
Codificação e decodificação de JSON Web Token (JWT) para Kit
kit-jwt
Codificação e decodificação de JSON Web Token (JWT) para Kit
[TOC]
Arquivos
| Arquivo | Descrição |
|---|---|
.editorconfig | Configuração de formatação do editor |
.gitignore | Regras de ignorar do Git para artefatos de build e dependências |
.tool-versions | Versões de ferramentas asdf (Zig, Kit) |
LICENSE | Arquivo de licença MIT |
README.md | Este arquivo |
examples/basic.kit | Exemplo básico de uso HS256 |
kit.toml | Manifesto do pacote com metadados, capacidades e dependências |
src/jwt.kit | API de codificação, decodificação, verificação e auxiliares JWT |
zig/jwt_rsa.zig | Ponte de assinatura e verificação RSA baseada em OpenSSL |
zig/kit_ffi.zig | Auxiliares de valor Kit Zig FFI usados pela ponte RSA |
tests/hs256.test.kit | Testes ativos de comportamento HS256 |
tests/types.test.kit | Testes de erro, tipo, algoritmo e forma de claims |
tests/rs256.kit.disabled | Testes opcionais de comportamento RS256 |
tests/rs384.kit.disabled | Testes opcionais de comportamento RS384 |
tests/rs512.kit.disabled | Testes opcionais de comportamento RS512 |
Dependências
- Dependência de pacote Kit:
crypto - Módulo padrão Kit:
Encoding.Base64 - Biblioteca nativa: OpenSSL
libcryptopara auxiliares RS256, RS384 e RS512 - Capacidade necessária:
ffi
O pacote é declarado como ffi-zig porque a assinatura e verificação RSA usam zig/jwt_rsa.zig. HS256 usa crypto.hmac-sha256.
Instalação
kit add gitlab.com/kit-lang/packages/kit-jwt.git
Uso
import Kit.Jwt as JWT
main = fn =>
secret = "my-super-secret-key-at-least-32-chars"
claims = "{\"sub\":\"user123\",\"name\":\"John Doe\",\"admin\":true,\"iat\":1700000000}"
match JWT.encode claims secret
| Err e ->
println "Falha ao criar token:"
println e
| Ok token ->
println "JWT:"
println token
if JWT.verify? token secret then
println "Token é válido"
else
println "Token é inválido"
match JWT.decode token secret
| Ok decoded ->
println "Cabeçalho:"
println decoded.header
println "Payload:"
println decoded.payload
| Err e ->
println "Falha na decodificação:"
println e
main
Funções auxiliares de assinatura e verificação suportadas:
| Algoritmo | Funções auxiliares |
|---|---|
| HS256 | encode, encode-with-header, decode, verify? |
| RS256 | encode-rs256, decode-rs256, verify-rs256?, get-claims-rs256 |
| RS384 | encode-rs384, decode-rs384, verify-rs384?, get-claims-rs384 |
| RS512 | encode-rs512, decode-rs512, verify-rs512?, get-claims-rs512 |
Funções auxiliares de inspeção insegura também estão disponíveis para depuração de tokens sem verificar assinaturas:
decode-unsafeget-claims-unsafeget-header-unsafe
Não use funções auxiliares inseguras para decisões de autorização.
Desenvolvimento
Executando Exemplos
Execute o exemplo básico com o interpretador:
kit run examples/basic.kit --allow=ffi
Compile o exemplo para um binário nativo:
kit build examples/basic.kit --allow=ffi && ./basic
Executando Testes
Execute a suíte de testes ativa:
kit test --allow=ffi
Execute a suíte de testes ativa com cobertura:
kit test --coverage --allow=ffi
Execute os arquivos de teste RSA opcionais diretamente:
kit test tests/rs256.kit.disabled --allow=ffi
kit test tests/rs384.kit.disabled --allow=ffi
kit test tests/rs512.kit.disabled --allow=ffi
Executando kit dev
Execute o fluxo de trabalho de desenvolvimento padrão (formatar, verificar, testar):
kit dev
Isso irá:
- Verificar formatação dos arquivos fonte e exemplos Kit
- Verificar tipos dos fontes e exemplos
- Executar testes ativos com cobertura
Executando Verificação de Paridade
Execute verificações de paridade interpretador/compilador para exemplos:
kit parity --failures-only
As verificações de paridade garantem que os exemplos executam pelo interpretador, compilam com sucesso, executam com sucesso e produzem saída correspondente.
Gerando Documentação
Gere documentação da API a partir de comentários de documentação:
kit doc src/jwt.kit
Nota: Fontes Kit com comentários de documentação (##) geram documentação HTML.
Limpando Artefatos de Build
Remova arquivos gerados, caches e artefatos de build:
kit task clean
Nota: Definido em kit.toml.
Instalação Local
Para instalar este pacote localmente para desenvolvimento:
kit install
Isso instala o pacote em ~/.kit/packages/@kit/jwt/, tornando-o disponível para importação como Kit.Jwt em outros projetos.
Notas de Segurança
- Use segredos HS256 fortes e aleatórios. Recomenda-se no mínimo 256 bits.
- Nunca envie chaves privadas ou segredos JWT de produção.
- Valide claims da aplicação como
exp,nbf,iat,isseaudapós a decodificação. - Prefira tokens de curta duração e rotacione chaves de acordo com o modelo de ameaça da sua aplicação.
- Use HTTPS sempre que transmitir JWTs por uma rede.
Licença
Este pacote é lançado sob a Licença MIT - consulte LICENSE para detalhes.