# مولّد JWT

أنشئ رمز ويب موقّعًا من نوع JSON باستخدام المطالبات الخاصة بك في JSON. اختر HS256 أو HS384 أو HS512 مع سر مشترك، أو RS256 إلى PS512 مع مفتاح RSA خاص، أو ES256 إلى ES512 مع مفتاح EC المطابق، أو EdDSA مع مفتاح Ed25519، بصيغة PEM أو JWK. يمكن للمولّد إضافة iat وexp وترويسة kid، ويوقّع باستخدام مكتبة jose ويعرض الرمز المضغوط بجوار الترويسة والحمولة بعد فك ترميزهما.

## الأسئلة الشائعة

### ما خوارزميات التوقيع التي يمكنني استخدامها؟

يدعم المولّد HS256 وHS384 وHS512 مع سر مشترك، وRS256 وRS384 وRS512 وPS256 وPS384 وPS512 مع مفتاح RSA خاص، وES256 وES384 وES512 مع مفتاح EC خاص على P-256 أو P-384 أو P-521، وEdDSA مع مفتاح Ed25519 خاص. تُكتب الخوارزمية التي تختارها في ترويسة alg، ويُضبط typ دائمًا على JWT.

### ما الذي أدخله في الحمولة؟

أدخل كائن JSON يتضمن مطالباتك، مثل sub أو name أو iss أو aud أو أي عضو مخصص. تُرفض المصفوفات والسلاسل النصية والقيم الأخرى التي ليست كائنًا، لأن حمولة JWT يجب أن تكون كائن JSON. يُحتفظ بترتيب المطالبات وقيمها تمامًا كما أدخلتها.

### كيف تُقرأ قيمة سر HMAC؟

في HS256 وHS384 وHS512، تُستخدم قيمة السر كنص UTF-8 بعد إزالة المسافات البيضاء في البداية والنهاية. إذا كانت قيمة السر ثنائية، فالصقها بصيغة JWK مثل {"kty": "oct", "k": "..."} مع البايتات بترميز base64url، وسيُستخدم بدلًا منها ما ينتج عن فك ترميز هذه البايتات. تُرفض مفاتيح PEM مع خوارزميات HMAC، لأن استخدام مفتاح عام كسر HMAC خطأ شائع.

### ما الطول المناسب لسر HS256؟

يوصي RFC 7518 بأن يكون المفتاح بطول ناتج التجزئة على الأقل، أي 32 بايتًا لـ HS256 و48 لـ HS384 و64 لـ HS512. يوقّع هذا الموقع باستخدام أسرار أقصر لتتمكن من إعادة إنتاج رموز الاختبار، لكن ينبغي أن تكون أسرار الإنتاج قيمًا عشوائية طويلة، مثل تلك التي ينشئها مولّد كلمات المرور.

### ما تنسيقات المفاتيح الخاصة المقبولة لـ RSA وEC وEdDSA؟

الصق مفتاحًا خاصًا PEM غير مشفّر بصيغة PKCS #8 (BEGIN PRIVATE KEY) أو PKCS #1 (BEGIN RSA PRIVATE KEY) أو SEC1 (BEGIN EC PRIVATE KEY)، أو مفتاح JWK خاصًا يتضمن العضو d. لا تُقرأ ملفات PEM المشفّرة أو مفاتيح OpenSSH الخاصة. يجب أن يتوافق المفتاح مع الخوارزمية؛ إذ يتطلب ES384 مفتاح P-384، وتتطلب مفاتيح RSA ما لا يقل عن 2048 بت.

### كيف يتم تعيين iat وexp؟

عند تفعيل خيار وقت الإصدار، يُعيّن iat إلى الوقت الحالي ما لم تتضمن حمولتك مطالبة iat مسبقًا. عندما تكون مدة انتهاء الصلاحية أكبر من 0 ثانية، يُعيّن exp إلى الوقت الحالي مضافًا إليه عدد الثواني، ويحل محل أي قيمة exp في حمولتك. عند ضبط مدة انتهاء الصلاحية على 0، لا تُضاف قيمة exp، ويُحتفظ بأي قيمة exp في حمولتك.

### ما الغرض من الحقل kid؟

تُكتب قيمة معرّف مفتاح غير فارغة في ترويسة kid كي تتمكن أدوات التحقق من اختيار المفتاح المناسب من JWKS. إذا لصقت JWKS كمفتاح توقيع، تحدد kid أيضًا المفتاح الذي سيوقّع الرمز من المجموعة. يعرض محوّل JWK ومولّدات المفاتيح بصمة RFC 7638، وهي قيمة مناسبة لـ kid.

### ما الذي تتضمنه النتيجة؟

ستحصل على الرمز المضغوط، والخوارزمية، ومعرّف المفتاح، ووقتي الإصدار والانتهاء بتنسيق UTC، إضافةً إلى الترويستين والحمولة JSON الدقيقتين اللتين وُقّعتا. انسخ الرمز من الكتلة الأولى. يمكنك فك ترميزه لاحقًا باستخدام أداة فك ترميز JWT أو التحقق منه باستخدام أداة التحقق من JWT.

### هل تُخزّن أسراري أو مفاتيحي؟

لا. لا ينتقل السر أو المفتاح الخاص إلا ضمن الطلب الذي يوقّع الرمز، ويُستخدم مرة واحدة في الذاكرة ولا يُسجّل أو يُحفظ مطلقًا. ومع ذلك، استخدم مفاتيح اختبار للتجارب، ولا تلصق مفتاح توقيع إنتاجيًا في أي أداة ويب ما لم تكن تتحكم في الخادم.

### هل توجد حدود للحجم؟

يمكن أن يصل طول الحمولة إلى 65,536 حرفًا، وطول المفتاح إلى 65,536 حرفًا، وطول kid إلى 256 حرفًا. تتراوح قيم انتهاء الصلاحية من 0 إلى 315,360,000 ثانية، أي عشر سنوات. تُرفض المدخلات الأطول مع رسالة تحدد الحقل.

إعلانك هنا؟

[راسلنا عبر البريد الإلكتروني](mailto:hi@dennn.is?subject=%D8%A7%D9%84%D8%A5%D8%B9%D9%84%D8%A7%D9%86%20%D8%B9%D9%84%D9%89%20OneClick%20Pro)

[إعلان مجموعة إضافات جاهزة للوكلاء من أجل WordPress.](https://sleekwp.com/?ref=oneclickpro)
