
Codificación y decodificación de JSON Web Token (JWT) para Kit
Codificación y decodificación de JSON Web Token (JWT) para Kit
[TOC]
| Archivo | Descripción |
|---|---|
.editorconfig | Configuración de formato del editor |
.gitignore | Reglas de ignorado de Git para artefactos de compilación y dependencias |
.tool-versions | Versiones de herramientas asdf (Zig, Kit) |
LICENSE | Archivo de licencia MIT |
README.md | Este archivo |
examples/basic.kit | Ejemplo básico de uso de HS256 |
kit.toml | Manifiesto del paquete con metadatos, capacidades y dependencias |
src/jwt.kit | API de codificación, decodificación, verificación y ayudantes de JWT |
zig/jwt_rsa.zig | Puente de firma y verificación RSA respaldado por OpenSSL |
zig/kit_ffi.zig | Ayudantes de valor FFI de Kit Zig utilizados por el puente RSA |
tests/hs256.test.kit | Pruebas de comportamiento activo de HS256 |
cryptoEncoding.Base64libcrypto para los ayudantes RS256, RS384 y RS512ffiEl paquete se declara como ffi-zig porque la firma y verificación RSA utilizan zig/jwt_rsa.zig. HS256 usa crypto.hmac-sha256.
kit add gitlab.com/kit-lang/packages/kit-jwt.git
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:
También están disponibles ayudantes de inspección insegura para depurar tokens sin verificar firmas:
decode-unsafeget-claims-unsafeget-header-unsafeNo utilices ayudantes inseguros para decisiones de autorización.
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
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
Ejecuta el flujo de trabajo de desarrollo estándar (formato, verificación, pruebas):
kit dev
Esto hará lo siguiente:
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.
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.
Elimina archivos generados, cachés y artefactos de compilación:
kit task clean
Nota: Definido en kit.toml.
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.
exp, nbf, iat, iss y aud después de decodificar.Este paquete se publica bajo la Licencia MIT - consulta LICENSE para más detalles.
tests/types.test.kit| Pruebas de errores, tipos, algoritmos y forma de claims |
tests/rs256.kit.disabled | Pruebas opcionales de comportamiento de RS256 |
tests/rs384.kit.disabled | Pruebas opcionales de comportamiento de RS384 |
tests/rs512.kit.disabled | Pruebas opcionales de comportamiento de RS512 |
| Algoritmo | Ayudantes |
|---|
| 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 |