
Codifica e decodifica di JSON Web Token (JWT) per Kit
Codifica e decodifica JSON Web Token (JWT) per Kit
[TOC]
| 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 |
cryptoEncoding.Base64libcrypto per gli helper RS256, RS384 e RS512ffiIl pacchetto è dichiarato come ffi-zig perché la firma e la verifica RSA utilizzano zig/jwt_rsa.zig. HS256 utilizza 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 "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:
Sono disponibili anche helper di ispezione non sicuri per il debug dei token senza verificare le firme:
decode-unsafeget-claims-unsafeget-header-unsafeNon utilizzare gli helper non sicuri per decisioni di autorizzazione.
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
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
Esegui il flusso di lavoro standard di sviluppo (formatta, controlla, testa):
kit dev
Questo farà:
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.
Genera documentazione API dai commenti di documentazione:
kit doc src/jwt.kit
Nota: I sorgenti Kit con commenti di documentazione (##) generano documentazione HTML.
Rimuovi file generati, cache e artefatti di build:
kit task clean
Nota: Definito in kit.toml.
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.
exp, nbf, iat, iss e aud dopo la decodifica.Questo pacchetto è rilasciato sotto la licenza MIT - vedere LICENSE per i dettagli.
| 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 |
| 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 |