
kit-jwt v2026.7.12
Codifica e decodifica di JSON Web Token (JWT) per Kit
kit-jwt
Codifica e decodifica JSON Web Token (JWT) per Kit
[TOC]
File
| File | Descrizione |
|---|---|
.editorconfig | Configurazione della formattazione dell'editor |
.gitignore | Regole Git per ignorare artefatti di build e dipendenze |
.tool-versions | Versioni degli strumenti asdf (Zig, Kit) |
LICENSE | File della licenza MIT |
README.md | Questo file |
examples/basic.kit | Esempio di base per HS256 |
kit.toml | Manifest del pacchetto con metadati, capacità e dipendenze |
src/jwt.kit | API per codifica, decodifica, verifica e helper JWT |
zig/jwt_rsa.zig | Bridge per firma e verifica RSA basato su OpenSSL |
zig/kit_ffi.zig | Helper per valori FFI Zig di Kit utilizzati dal bridge RSA |
tests/hs256.test.kit | Test attivi per il comportamento HS256 |
tests/types.test.kit | Test su errori, tipi, algoritmi e forma delle rivendicazioni |
tests/rs256.kit.disabled | Test opzionali per il comportamento RS256 |
tests/rs384.kit.disabled | Test opzionali per il comportamento RS384 |
tests/rs512.kit.disabled | Test opzionali per il comportamento RS512 |
Dipendenze
- Dipendenza del pacchetto Kit:
crypto - Modulo standard Kit:
Encoding.Base64 - Libreria nativa: OpenSSL
libcryptoper gli helper RS256, RS384 e RS512 - Capacità richiesta:
ffi
Il pacchetto è dichiarato come ffi-zig perché la firma e la verifica RSA utilizzano zig/jwt_rsa.zig. HS256 utilizza crypto.hmac-sha256.
Installazione
kit add gitlab.com/kit-lang/packages/kit-jwt.git
Utilizzo
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 "Errore nella creazione del token:"
println e
| Ok token ->
println "JWT:"
println token
if JWT.verify? token secret then
println "Il token è valido"
else
println "Il token non è valido"
match JWT.decode token secret
| Ok decoded ->
println "Intestazione:"
println decoded.header
println "Payload:"
println decoded.payload
| Err e ->
println "Decodifica fallita:"
println e
main
Helper supportati per firma e verifica:
| Algoritmo | Helper |
|---|---|
| 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 |
Sono disponibili anche helper di ispezione non sicuri per il debug dei token senza verificare le firme:
decode-unsafeget-claims-unsafeget-header-unsafe
Non utilizzare gli helper non sicuri per decisioni di autorizzazione.
Sviluppo
Esecuzione degli esempi
Esegui l'esempio di base con l'interprete:
kit run examples/basic.kit --allow=ffi
Compila l'esempio in un binario nativo:
kit build examples/basic.kit --allow=ffi && ./basic
Esecuzione dei test
Esegui la suite di test attiva:
kit test --allow=ffi
Esegui la suite di test attiva con copertura:
kit test --coverage --allow=ffi
Esegui direttamente i file di test RSA opzionali:
kit test tests/rs256.kit.disabled --allow=ffi
kit test tests/rs384.kit.disabled --allow=ffi
kit test tests/rs512.kit.disabled --allow=ffi
Esecuzione di kit dev
Esegui il flusso di lavoro standard di sviluppo (formatta, controlla, testa):
kit dev
Questo farà:
- Controllare la formattazione per i file sorgente e gli esempi Kit
- Controllare i tipi per i sorgenti e gli esempi
- Eseguire i test attivi con copertura
Esecuzione del controllo di parità
Esegui i controlli di parità interprete/compilatore per gli esempi:
kit parity --failures-only
I controlli di parità garantiscono che gli esempi vengano eseguiti tramite l'interprete, compilino con successo, vengano eseguiti con successo e producano output corrispondenti.
Generazione della documentazione
Genera documentazione API dai commenti di documentazione:
kit doc src/jwt.kit
Nota: I sorgenti Kit con commenti di documentazione (##) generano documentazione HTML.
Pulizia degli artefatti di build
Rimuovi file generati, cache e artefatti di build:
kit task clean
Nota: Definito in kit.toml.
Installazione locale
Per installare questo pacchetto localmente per lo sviluppo:
kit install
Questo installa il pacchetto in ~/.kit/packages/@kit/jwt/, rendendolo disponibile per l'import come Kit.Jwt in altri progetti.
Note sulla sicurezza
- Utilizza segreti HS256 forti e casuali. Si consiglia un minimo di 256 bit.
- Non commettere mai chiavi private o segreti JWT di produzione.
- Convalida le rivendicazioni dell'applicazione come
exp,nbf,iat,isseauddopo la decodifica. - Preferisci token a breve durata e ruota le chiavi secondo il modello di minaccia della tua applicazione.
- Utilizza HTTPS ogni volta che trasmetti JWT su una rete.
Licenza
Questo pacchetto è rilasciato sotto la licenza MIT - vedere LICENSE per i dettagli.