
kit-jwt v2026.7.12
JSON Web Token(JWT)のエンコードとデコード(Kit向け)
kit-jwt
Kit 向けの JSON Web Token (JWT) エンコード / デコード
[TOC]
ファイル
| ファイル | 説明 |
|---|---|
.editorconfig | エディタのフォーマット設定 |
.gitignore | ビルド成果物や依存関係用の Git 無視ルール |
.tool-versions | asdf ツールバージョン (Zig, Kit) |
LICENSE | MIT ライセンスファイル |
README.md | 本ファイル |
examples/basic.kit | 基本的な HS256 使用例 |
kit.toml | メタデータ、機能、依存関係を含むパッケージマニフェスト |
src/jwt.kit | JWT のエンコード、デコード、検証、ヘルパー API |
zig/jwt_rsa.zig | OpenSSL ベースの RSA 署名/検証ブリッジ |
zig/kit_ffi.zig | RSA ブリッジで使用される Kit Zig FFI 値ヘルパー |
tests/hs256.test.kit | アクティブな HS256 動作テスト |
tests/types.test.kit | エラー、型、アルゴリズム、クレーム形状のテスト |
tests/rs256.kit.disabled | オプションの RS256 動作テスト |
tests/rs384.kit.disabled | オプションの RS384 動作テスト |
tests/rs512.kit.disabled | オプションの RS512 動作テスト |
依存関係
- Kit パッケージ依存:
crypto - Kit 標準モジュール:
Encoding.Base64 - ネイティブライブラリ: RS256、RS384、RS512 ヘルパー用 OpenSSL
libcrypto - 必要な機能:
ffi
パッケージは ffi-zig として宣言されています。RSA 署名/検証が zig/jwt_rsa.zig を使用するためです。HS256 は 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 "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
サポートされている署名/検証ヘルパー:
| アルゴリズム | ヘルパー |
|---|---|
| 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 |
安全でない検査ヘルパーも、署名を検証せずにトークンをデバッグするために利用できます:
decode-unsafeget-claims-unsafeget-header-unsafe
認可の判断に安全でないヘルパーを使用しないでください。
開発
例の実行
インタプリタで基本例を実行:
kit run examples/basic.kit --allow=ffi
例をネイティブバイナリにコンパイル:
kit build examples/basic.kit --allow=ffi && ./basic
テストの実行
アクティブなテストスイートを実行:
kit test --allow=ffi
カバレッジ付きでアクティブなテストスイートを実行:
kit test --coverage --allow=ffi
オプションの RSA テストファイルを直接実行:
kit test tests/rs256.kit.disabled --allow=ffi
kit test tests/rs384.kit.disabled --allow=ffi
kit test tests/rs512.kit.disabled --allow=ffi
kit dev の実行
標準の開発ワークフロー (フォーマット、チェック、テスト) を実行:
kit dev
これにより以下の処理が行われます:
- Kit ソースファイルと例ファイルのフォーマット確認
- ソースと例の型チェック
- カバレッジ付きのアクティブなテスト実行
パリティの実行
例のインタプリタ/コンパイラパリティチェックを実行:
kit parity --failures-only
パリティチェックでは、例がインタプリタで実行され、コンパイルが成功し、正常に実行され、一致する出力が得られることを確認します。
ドキュメントの生成
ドキュメントコメントから API ドキュメントを生成:
kit doc src/jwt.kit
注釈: ドキュメントコメント (##) を含む Kit ソースは HTML ドキュメントを生成します。
ビルド成果物のクリーンアップ
生成ファイル、キャッシュ、ビルド成果物を削除:
kit task clean
注釈: kit.toml で定義されています。
ローカルインストール
開発のためにこのパッケージをローカルにインストールする場合:
kit install
これによりパッケージが ~/.kit/packages/@kit/jwt/ にインストールされ、他のプロジェクトで Kit.Jwt としてインポートできるようになります。
セキュリティに関する注意事項
- 強力でランダムな HS256 シークレットを使用してください。最低でも 256 ビットを推奨します。
- 秘密鍵や本番環境の JWT シークレットをコミットしないでください。
- デコード後、
exp、nbf、iat、iss、audなどのアプリケーションクレームを検証してください。 - 短命なトークンを推奨し、アプリケーションの脅威モデルに従って鍵をローテーションしてください。
- ネットワーク上で JWT を送信する場合は常に HTTPS を使用してください。
ライセンス
このパッケージは MIT ライセンスの下でリリースされています。詳細は LICENSE を参照してください。