Volver a actualizaciones
Nuevo releaseJul 14, 2026

kit-jwt v2026.7.12

Codificación y decodificación de JSON Web Token (JWT) para Kit

Compartir

kit-jwt

Codificación y decodificación de JSON Web Token (JWT) para Kit


[TOC]


Archivos

ArchivoDescripción
.editorconfigConfiguración de formato del editor
.gitignoreReglas de ignorado de Git para artefactos de compilación y dependencias
.tool-versionsVersiones de herramientas asdf (Zig, Kit)
LICENSEArchivo de licencia MIT
README.mdEste archivo
examples/basic.kitEjemplo básico de uso de HS256
kit.tomlManifiesto del paquete con metadatos, capacidades y dependencias
src/jwt.kitAPI de codificación, decodificación, verificación y ayudantes de JWT
zig/jwt_rsa.zigPuente de firma y verificación RSA respaldado por OpenSSL
zig/kit_ffi.zigAyudantes de valor FFI de Kit Zig utilizados por el puente RSA
tests/hs256.test.kitPruebas de comportamiento activo de HS256
tests/types.test.kitPruebas de errores, tipos, algoritmos y forma de claims
tests/rs256.kit.disabledPruebas opcionales de comportamiento de RS256
tests/rs384.kit.disabledPruebas opcionales de comportamiento de RS384
tests/rs512.kit.disabledPruebas opcionales de comportamiento de RS512

Dependencias

  • Dependencia de paquete Kit: crypto
  • Módulo estándar de Kit: Encoding.Base64
  • Biblioteca nativa: OpenSSL libcrypto para los ayudantes RS256, RS384 y RS512
  • Capacidad requerida: ffi

El paquete se declara como ffi-zig porque la firma y verificación RSA utilizan zig/jwt_rsa.zig. HS256 usa crypto.hmac-sha256.

Instalación

kit add gitlab.com/kit-lang/packages/kit-jwt.git

Uso

import Kit.Jwt as JWT

main = fn =>
  secret = "mi-clave-super-secreta-de-al-menos-32-caracteres"
  claims = "{\"sub\":\"user123\",\"name\":\"John Doe\",\"admin\":true,\"iat\":1700000000}"

  match JWT.encode claims secret
    | Err e ->
      println "Error al crear el token:"
      println e
    | Ok token ->
      println "JWT:"
      println token

      if JWT.verify? token secret then
        println "El token es válido"
      else
        println "El token no es válido"

      match JWT.decode token secret
        | Ok decoded ->
          println "Encabezado:"
          println decoded.header
          println "Carga útil:"
          println decoded.payload
        | Err e ->
          println "Error al decodificar:"
          println e

main

Ayudantes de firma y verificación compatibles:

AlgoritmoAyudantes
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

También están disponibles ayudantes de inspección insegura para depurar tokens sin verificar firmas:

  • decode-unsafe
  • get-claims-unsafe
  • get-header-unsafe

No utilices ayudantes inseguros para decisiones de autorización.

Desarrollo

Ejecutar ejemplos

Ejecuta el ejemplo básico con el intérprete:

kit run examples/basic.kit --allow=ffi

Compila el ejemplo a un binario nativo:

kit build examples/basic.kit --allow=ffi && ./basic

Ejecutar pruebas

Ejecuta el conjunto de pruebas activas:

kit test --allow=ffi

Ejecuta el conjunto de pruebas activas con cobertura:

kit test --coverage --allow=ffi

Ejecuta directamente los archivos de prueba RSA opcionales:

kit test tests/rs256.kit.disabled --allow=ffi
kit test tests/rs384.kit.disabled --allow=ffi
kit test tests/rs512.kit.disabled --allow=ffi

Ejecutar kit dev

Ejecuta el flujo de trabajo de desarrollo estándar (formato, verificación, pruebas):

kit dev

Esto hará lo siguiente:

  1. Verificar el formato de los archivos fuente y ejemplos de Kit
  2. Verificar tipos de los archivos fuente y ejemplos
  3. Ejecutar pruebas activas con cobertura

Ejecutar paridad

Ejecuta comprobaciones de paridad intérprete/compilador para los ejemplos:

kit parity --failures-only

Las comprobaciones de paridad verifican que los ejemplos se ejecuten a través del intérprete, se compilen correctamente, se ejecuten correctamente y produzcan resultados coincidentes.

Generar documentación

Genera documentación de la API a partir de comentarios de documentación:

kit doc src/jwt.kit

Nota: Los archivos fuente de Kit con comentarios de documentación (##) generan documentación HTML.

Limpiar artefactos de compilación

Elimina archivos generados, cachés y artefactos de compilación:

kit task clean

Nota: Definido en kit.toml.

Instalación local

Para instalar este paquete localmente para desarrollo:

kit install

Esto instala el paquete en ~/.kit/packages/@kit/jwt/, haciéndolo disponible para importar como Kit.Jwt en otros proyectos.

Notas de seguridad

  • Utiliza secretos HS256 fuertes y aleatorios. Se recomienda un mínimo de 256 bits.
  • Nunca comprometas claves privadas o secretos de JWT de producción.
  • Valida los claims de la aplicación como exp, nbf, iat, iss y aud después de decodificar.
  • Prefiere tokens de corta duración y rota las claves según el modelo de amenazas de tu aplicación.
  • Usa HTTPS siempre que transmitas JWTs a través de una red.

Licencia

Este paquete se publica bajo la Licencia MIT - consulta LICENSE para más detalles.

Categorías