TK TaskKit
أدوات المطورين

توقيع JWT

وقّع JSON Web Tokens محلياً بخوارزميات HS و RS و PS و ES. الـ header والـ payload ومفتاح التوقيع لا تغادر متصفحك.

الخوارزمية
Header
Claims مخصّصة
Payload
Claims مخصّصة
Header (خام)
Payload (خام)
مفتاح التوقيعHS256
JWT الموقّع

اختر خوارزمية، حرّر الـ header والـ payload، الصق مفتاح التوقيع — وسيظهر الـ JWT الموقّع هنا.

إدخالاتك تبقى على جهازك. كل أدوات المطورين في TaskKit تعمل في متصفحك. الرموز والـ payloads وما تلصقه لا يُرسل لخوادم TaskKit ولا لأي طرف ثالث.

ما الذي تفعله هذه الأداة

تُوقّع أداة توقيع JWT أي JSON Web Token بالكامل داخل متصفحك. اختر الخوارزمية، حرّر الترويسة والحمولة، الصق مفتاح التوقيع (سر مشترك لـ HMAC؛ أو مفتاح خاص PKCS#8 PEM لـ RSA أو ECDSA)، وستحصل على رمز موقّع كامل يمكنك لصقه في طلب أو في تثبيت اختبار أو في ملف إعدادات.

الخوارزميات المدعومة: HS256/384/512، و RS256/384/512، و PS256/384/512، و ES256/384/512، و EdDSA (Ed25519). alg: none مدعومة كذلك، لكن الواجهة تُشير إليها على أنها مخاطرة الرمز غير الموقّع.

يقبل إدخال المفتاح ما تُصدره أدوات سطر الأوامر فعلاً. يمكن لصق مفاتيح RSA الخاصة بصيغة PKCS#8 (BEGIN PRIVATE KEY) أو PKCS#1 (BEGIN RSA PRIVATE KEY) — حيث يلفّ TaskKit جسم PKCS#1 إلى PKCS#8 بقارئ ASN.1 صغير مدمج قبل تسليمه إلى WebCrypto، فلا حاجة إلى خطوة openssl pkcs8 -topk8. ويقبل EdDSA البذرة الخاصة ذات الـ 32 بايت على شكل 64 رمزاً ست عشرياً، أو 43 رمزاً base64url، أو JWK، أو PKCS#8 PEM. أمّا مفاتيح PKCS#8 المشفّرة (BEGIN ENCRYPTED PRIVATE KEY) فتُرفض مع تلميح فك التشفير على سطر واحد؛ ومفاتيح SEC1 EC الخاصة (BEGIN EC PRIVATE KEY) تُرفض مع تلميح تحويل على سطر واحد.

متى تستخدمها

  • توليد رمز لاختبار تكامل محلي تتحكّم فيه بكلا الطرفين.
  • إنتاج تثبيت لاختبار وحدة يحتاج سلسلة على شكل رمز بتوقيع حقيقي.
  • إعادة إنتاج خلل من رمز يعمل عبر تعديل مطالبة ثم إعادة التوقيع بنفس المفتاح.
  • بناء رمز مثال لزميل أثناء جلسة تصحيح، دون كشف السر على موقع مشترك.

كيف تعمل

يستخدم التوقيع crypto.subtle.sign، وهي واجهة WebCrypto المدمجة في المتصفح. تُستورد مفاتيح HMAC من بايتات خام؛ وتُستورد مفاتيح RSA و ECDSA الخاصة بصيغة PKCS#8 (يُحوَّل PKCS#1 على الفور). ويمرّ EdDSA عبر @noble/ed25519 لأن دعم Ed25519 في WebCrypto لا يزال متفاوتاً. تبني الأداة base64url(header).base64url(payload).base64url(signature) وهذا هو الرمز.

يُعاد دائماً ضبط حقل alg في الترويسة ليطابق الخوارزمية التي اخترتها، حتى لو كتبت شيئاً مختلفاً في حقل الترويسة. وتُضاف typ: "JWT" افتراضياً إن لم تضمّنها. وتُحفظ حقول الترويسة المخصّصة (kid و x5t وأي شيء آخر).

لا تغادر الترويسة ولا الحمولة ولا مفتاح التوقيع متصفحك. لا توجد خطوة على الخادم.

ملاحظات

من أين أحصل على مفتاح خاص؟ لـ RSA: openssl genpkey -algorithm RSA -out private.pem -pkeyopt rsa_keygen_bits:2048 يُنتج PKCS#8 PEM (BEGIN PRIVATE KEY). كتل PKCS#1 الأقدم (BEGIN RSA PRIVATE KEY) مقبولة مباشرةً — دون خطوة تحويل. لـ EdDSA: openssl genpkey -algorithm Ed25519 يعمل ويقرأ TaskKit ناتج PKCS#8 PEM. أمّا مفاتيح SEC1 EC الخاصة (BEGIN EC PRIVATE KEY) فتحتاج تحويلاً مسبقاً بـ openssl pkcs8 -topk8 -nocrypt -in sec1.pem -out pkcs8.pem.

هل أوقّع رموزاً بـ alg: none؟ لا تقريباً. الرمز غير الموقّع لا حماية لسلامته، وأي متحقّق يقبله يمكن خداعه. تنتجه الأداة للاكتمال وتحذّر صراحةً؛ تعامل مع الناتج للاختبار فقط.

HS أم RS للكود الجديد؟ RS256 (أو ES256) عندما يتحقّق طرف خارجي — يحتاج المفتاح العام فقط. أمّا HS256 فحين تكون الخدمة نفسها على الجانبين.

أدوات ذات صلة