
kit-jwt v2026.7.12
JSON Web Token (JWT) ترميز وفك الترميز لـ Kit
kit-jwt
ترميز وفك ترميز JSON Web Token (JWT) لـ Kit
[TOC]
الملفات
| الملف | الوصف |
|---|---|
.editorconfig | إعدادات تنسيق المحرر |
.gitignore | قواعد تجاهل Git لملفات البناء والتبعيات |
.tool-versions | إصدارات أدوات asdf (Zig, Kit) |
LICENSE | ملف ترخيص MIT |
README.md | هذا الملف |
examples/basic.kit | مثال أساسي لاستخدام HS256 |
kit.toml | بيان الحزمة مع البيانات الوصفية والإمكانيات والتبعيات |
src/jwt.kit | واجهة برمجة تطبيقات ترميز وفك ترميز JWT والتحقق والمساعدة |
zig/jwt_rsa.zig | جسر التوقيع والتحقق من RSA المدعوم من OpenSSL |
zig/kit_ffi.zig | مساعدات قيم Kit Zig FFI المستخدمة من قبل جسر RSA |
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 - مكتبة أصلية: OpenSSL
libcryptoللمساعدات RS256 و RS384 و RS512 - الإمكانية المطلوبة:
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
- فحص الأنواع في المصدر والأمثلة
- تشغيل الاختبارات النشطة مع تغطية
تشغيل فحص التطابق (Parity)
شغّل فحوصات التطابق بين المفسر والمترجم للأمثلة:
kit parity --failures-only
تتحقق فحوصات التطابق من أن الأمثلة تُشغّل عبر المفسر، وتُجمّع بنجاح، وتُنفّذ بنجاح، وتُنتج مخرجات متطابقة.
إنشاء التوثيق
أنشئ توثيق واجهة برمجة التطبيقات من تعليقات التوثيق:
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بعد فك الترميز. - يُفضّل استخدام الرموز قصيرة العمر وتدوير المفاتيح وفقًا لنموذج التهديد الخاص بتطبيقك.
- استخدم HTTPS عند نقل JWTs عبر الشبكة.
الترخيص
تم إصدار هذه الحزمة بموجب ترخيص MIT - راجع LICENSE للتفاصيل.