
kit-jwt v2026.7.12
Encodage et décodage de JSON Web Token (JWT) pour Kit
kit-jwt
Encodage et décodage de JSON Web Token (JWT) pour Kit
[TOC]
Fichiers
| Fichier | Description |
|---|---|
.editorconfig | Configuration de formatage d'éditeur |
.gitignore | Règles Git ignore pour les artefacts de construction et dépendances |
.tool-versions | Versions d'outils asdf (Zig, Kit) |
LICENSE | Fichier de licence MIT |
README.md | Ce fichier |
examples/basic.kit | Exemple d'utilisation de base HS256 |
kit.toml | Manifeste du paquet avec métadonnées, capacités et dépendances |
src/jwt.kit | API d'encodage, décodage, vérification et aides JWT |
zig/jwt_rsa.zig | Pont de signature et vérification RSA basé sur OpenSSL |
zig/kit_ffi.zig | Aides de valeurs FFI Kit Zig utilisées par le pont RSA |
tests/hs256.test.kit | Tests de comportement HS256 actifs |
tests/types.test.kit | Tests d'erreur, de type, d'algorithme et de forme des revendications |
tests/rs256.kit.disabled | Tests de comportement RS256 optionnels |
tests/rs384.kit.disabled | Tests de comportement RS384 optionnels |
tests/rs512.kit.disabled | Tests de comportement RS512 optionnels |
Dépendances
- Dépendance de paquet Kit :
crypto - Module standard Kit :
Encoding.Base64 - Bibliothèque native : OpenSSL
libcryptopour les aides RS256, RS384 et RS512 - Capacité requise :
ffi
Le paquet est déclaré comme ffi-zig car la signature et la vérification RSA utilisent zig/jwt_rsa.zig. HS256 utilise crypto.hmac-sha256.
Installation
kit add gitlab.com/kit-lang/packages/kit-jwt.git
Usage
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 "Failed to create token:"
println e
| Ok token ->
println "JWT:"
println token
if JWT.verify? token secret then
println "Token is valid"
else
println "Token is invalid"
match JWT.decode token secret
| Ok decoded ->
println "Header:"
println decoded.header
println "Payload:"
println decoded.payload
| Err e ->
println "Decode failed:"
println e
main
Aides de signature et vérification prises en charge :
| Algorithme | Aides |
|---|---|
| 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 |
Des aides d'inspection non sécurisées sont également disponibles pour déboguer les jetons sans vérifier les signatures :
decode-unsafeget-claims-unsafeget-header-unsafe
N'utilisez pas les aides non sécurisées pour les décisions d'autorisation.
Développement
Exécution des exemples
Exécutez l'exemple de base avec l'interpréteur :
kit run examples/basic.kit --allow=ffi
Compilez l'exemple en binaire natif :
kit build examples/basic.kit --allow=ffi && ./basic
Exécution des tests
Exécutez la suite de tests active :
kit test --allow=ffi
Exécutez la suite de tests active avec couverture :
kit test --coverage --allow=ffi
Exécutez les fichiers de test RSA optionnels directement :
kit test tests/rs256.kit.disabled --allow=ffi
kit test tests/rs384.kit.disabled --allow=ffi
kit test tests/rs512.kit.disabled --allow=ffi
Exécution de kit dev
Exécutez le workflow de développement standard (formatage, vérification, test) :
kit dev
Cela va :
- Vérifier le formatage des fichiers source et d'exemple Kit
- Vérifier les types des sources et des exemples
- Exécuter les tests actifs avec couverture
Exécution de la parité
Exécutez les vérifications de parité interpréteur/compilateur pour les exemples :
kit parity --failures-only
La parité vérifie que les exemples s'exécutent via l'interpréteur, se compilent avec succès, s'exécutent avec succès et produisent une sortie correspondante.
Génération de documentation
Générez la documentation API à partir des commentaires de documentation :
kit doc src/jwt.kit
Remarque : Les sources Kit avec des commentaires de documentation (##) génèrent une documentation HTML.
Nettoyage des artefacts de construction
Supprimez les fichiers générés, caches et artefacts de construction :
kit task clean
Remarque : Défini dans kit.toml.
Installation locale
Pour installer ce paquet localement pour le développement :
kit install
Ceci installe le paquet dans ~/.kit/packages/@kit/jwt/, le rendant disponible pour importation en tant que Kit.Jwt dans d'autres projets.
Notes de sécurité
- Utilisez des secrets HS256 forts et aléatoires. Un minimum de 256 bits est recommandé.
- Ne commettez jamais de clés privées ou de secrets JWT de production.
- Validez les revendications de l'application telles que
exp,nbf,iat,issetaudaprès le décodage. - Préférez des jetons à courte durée de vie et faites pivoter les clés selon le modèle de menace de votre application.
- Utilisez HTTPS lors de la transmission de JWTs sur un réseau.
Licence
Ce paquet est publié sous la licence MIT - voir LICENSE pour plus de détails.