
Codificação e decodificação de JSON Web Token (JWT) para Kit
Codificação e decodificação de JSON Web Token (JWT) para Kit
[TOC]
| 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 |
cryptoEncoding.Base64libcrypto para auxiliares RS256, RS384 e RS512ffiO pacote é declarado como ffi-zig porque a assinatura e verificação RSA usam zig/jwt_rsa.zig. HS256 usa crypto.hmac-sha256.
kit add gitlab.com/kit-lang/packages/kit-jwt.git
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:
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-unsafeNão use funções auxiliares inseguras para decisões de autorização.
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
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
Execute o fluxo de trabalho de desenvolvimento padrão (formatar, verificar, testar):
kit dev
Isso irá:
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.
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.
Remova arquivos gerados, caches e artefatos de build:
kit task clean
Nota: Definido em kit.toml.
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.
exp, nbf, iat, iss e aud após a decodificação.Este pacote é lançado sob a Licença MIT - consulte LICENSE para detalhes.
| 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 |
| 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 |