مع هذه المعلومات التاريخية وبعض المعايير كأساس، كيف يمكننا معالجة JWT السابق وما المعلومات التي يتضمنها؟
يتكون JWT أعلاه من ثلاثة أجزاء، يفصل كل منها نقطة (‘.’):
- الرأس:: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
- الحمولة: eyJzdWIiOiIxMjM0NTY3ODkwQUJDIiwibmFtZSI6IkhlbnJpayBMb2VzZXIiLCJpYXQiOjE2MTExNDA0MDAsImV4cCI6MTYxMTIzNDU2N30
- التوقيع: _iVbBcypdse-9sjrxp9iOrGsXKBWrBB3mrHgBtukcfM
يتم تشفير كل من الرأس والحمولة base64url، ولا يتم أخذ الحشو المحتمل في الحسبان، ويمكن فك تشفيرهما على النحو التالي:
henrik@home> base64 -d <<< eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9
{"alg":"HS256","typ":"JWT"}
henrik@home> base64 -d <<< eyJzdWIiOiIxMjM0NTY3ODkwQUJDIiwibmFtZSI6IkhlbnJpayBMb2VzZXIiLCJpYXQiOjE2MTExNDA0MDAsImV4cCI6MTYxMTIzNDU2N30
{"sub":"1234567890ABC","name":"Henrik Loeser","iat":1611140400,"exp":1611234567}base64: invalid input
يحتوي الرأس على معلومات حول الخوارزمية المستخدمة — هنا، HS256 (HMAC) SHA256). تعتمد الحمولة على نوع الرمز (وصول/تجديد/هوية/…) وتتكوّن من المطالبات. يتم إدارة تلك الحقول المحددة سلفًا لرأس JOSE وحقول الحمولة الأخرى من خلال IANA. في المثال أعلاه، الحقول والمطالبات هي: الموضوع والاسم ووقت الإصدار، ووقت الانتهاء.
يتم حساب التوقيع عن طريق تطبيق الخوارزمية المحددة على دمج الرأس’.’ والحمولة، ثم تشفير النتيجة باستخدام Base64url بعد ذلك، تشكَل الأجزاء الثلاثة المفصولة بنقطة JWT. يتم تحديد تفاصيل كيفية اشتقاق التوقيع في RFC 7515.
يمكنك الوصول إلى JWT السابق في مصحح الأخطاء عبر الإنترنت هذا على JTW.io. أولاً، ستظهر رسالة “توقيع غير صالح” يمكنك حل المشكلة عن طريق استبدال السر الافتراضي المعروض بـ !!!my-really-big-256-bit-secret!!!.