Retour aux mises à jour
New releaseJul 14, 2026

kit-jwt v2026.7.12

Encodage et décodage de JSON Web Token (JWT) pour Kit

Partager

kit-jwt

Encodage et décodage de JSON Web Token (JWT) pour Kit


[TOC]


Fichiers

FichierDescription
.editorconfigConfiguration de formatage d'éditeur
.gitignoreRègles Git ignore pour les artefacts de construction et dépendances
.tool-versionsVersions d'outils asdf (Zig, Kit)
LICENSEFichier de licence MIT
README.mdCe fichier
examples/basic.kitExemple d'utilisation de base HS256
kit.tomlManifeste du paquet avec métadonnées, capacités et dépendances
src/jwt.kitAPI d'encodage, décodage, vérification et aides JWT
zig/jwt_rsa.zigPont de signature et vérification RSA basé sur OpenSSL
zig/kit_ffi.zigAides de valeurs FFI Kit Zig utilisées par le pont RSA
tests/hs256.test.kitTests de comportement HS256 actifs
tests/types.test.kitTests d'erreur, de type, d'algorithme et de forme des revendications
tests/rs256.kit.disabledTests de comportement RS256 optionnels
tests/rs384.kit.disabledTests de comportement RS384 optionnels
tests/rs512.kit.disabledTests de comportement RS512 optionnels

Dépendances

  • Dépendance de paquet Kit : crypto
  • Module standard Kit : Encoding.Base64
  • Bibliothèque native : OpenSSL libcrypto pour 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 :

AlgorithmeAides
HS256encode, encode-with-header, decode, verify?
RS256encode-rs256, decode-rs256, verify-rs256?, get-claims-rs256
RS384encode-rs384, decode-rs384, verify-rs384?, get-claims-rs384
RS512encode-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-unsafe
  • get-claims-unsafe
  • get-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 :

  1. Vérifier le formatage des fichiers source et d'exemple Kit
  2. Vérifier les types des sources et des exemples
  3. 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, iss et aud aprè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.

Catégories