
JSON Web Token (JWT) Kodierung und Decodierung für Kit
JSON Web Token (JWT)-Kodierung und -Dekodierung für Kit
[TOC]
| Datei | Beschreibung |
|---|---|
.editorconfig | Editor-Formatierungskonfiguration |
.gitignore | Git-Ignore-Regeln für Build-Artefakte und Abhängigkeiten |
.tool-versions | asdf-Toolversionen (Zig, Kit) |
LICENSE | MIT-Lizenzdatei |
README.md | Diese Datei |
examples/basic.kit | Einfaches HS256-Nutzungsbeispiel |
kit.toml | Paketmanifest mit Metadaten, Fähigkeiten und Abhängigkeiten |
src/jwt.kit | JWT-Kodierung, -Dekodierung, -Verifikation und Hilfs-API |
zig/jwt_rsa.zig | OpenSSL-gestützte RSA-Signier- und Verifikationsbrücke |
zig/kit_ffi.zig | Kit-Zig-FFI-Wert-Helfer, verwendet von der RSA-Brücke |
tests/hs256.test.kit | Aktive HS256-Verhaltenstests |
tests/types.test.kit | Fehler-, Typ-, Algorithmus- und Claim-Form-Tests |
cryptoEncoding.Base64libcrypto für RS256-, RS384- und RS512-HelferffiDas Paket ist als ffi-zig deklariert, da RSA-Signieren und -Verifizieren zig/jwt_rsa.zig verwenden. HS256 verwendet 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 "Fehler beim Erstellen des Tokens:"
println e
| Ok token ->
println "JWT:"
println token
if JWT.verify? token secret then
println "Token ist gültig"
else
println "Token ist ungültig"
match JWT.decode token secret
| Ok decoded ->
println "Header:"
println decoded.header
println "Payload:"
println decoded.payload
| Err e ->
println "Dekodierung fehlgeschlagen:"
println e
main
Unterstützte Signier- und Verifikationshilfen:
Für das Debuggen von Token ohne Signaturverifikation stehen auch unsichere Inspektionshelfer zur Verfügung:
decode-unsafeget-claims-unsafeget-header-unsafeVerwenden Sie keine unsicheren Helfer für Autorisierungsentscheidungen.
Führen Sie das Basisbeispiel mit dem Interpreter aus:
kit run examples/basic.kit --allow=ffi
Kompilieren Sie das Beispiel zu einer nativen Binärdatei:
kit build examples/basic.kit --allow=ffi && ./basic
Führen Sie die aktive Testsuite aus:
kit test --allow=ffi
Führen Sie die aktive Testsuite mit Codeabdeckung aus:
kit test --coverage --allow=ffi
Führen Sie die optionalen RSA-Testdateien direkt aus:
kit test tests/rs256.kit.disabled --allow=ffi
kit test tests/rs384.kit.disabled --allow=ffi
kit test tests/rs512.kit.disabled --allow=ffi
Führen Sie den Standard-Entwicklungsworkflow aus (Formatierung, Prüfung, Tests):
kit dev
Dies wird:
Führen Sie Interpreter/Compiler-Paritätsprüfungen für Beispiele aus:
kit parity --failures-only
Paritätsprüfungen stellen sicher, dass Beispiele im Interpreter laufen, erfolgreich kompilieren, erfolgreich ausgeführt werden und übereinstimmende Ausgaben liefern.
Generieren Sie API-Dokumentation aus Dok-Kommentaren:
kit doc src/jwt.kit
Hinweis: Kit-Quellen mit Dok-Kommentaren (##) generieren HTML-Dokumentation.
Entfernen Sie generierte Dateien, Caches und Build-Artefakte:
kit task clean
Hinweis: Definiert in kit.toml.
Um dieses Paket lokal für die Entwicklung zu installieren:
kit install
Dadurch wird das Paket in ~/.kit/packages/@kit/jwt/ installiert und steht in anderen Projekten als Kit.Jwt zur Verfügung.
exp, nbf, iat, iss und aud nach der Dekodierung.Dieses Paket wird unter der MIT-Lizenz veröffentlicht – siehe LICENSE für Details.
tests/rs256.kit.disabled | Optionale RS256-Verhaltenstests |
tests/rs384.kit.disabled | Optionale RS384-Verhaltenstests |
tests/rs512.kit.disabled | Optionale RS512-Verhaltenstests |
| Algorithmus | Helfer |
|---|
| 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 |