رموز JSON للويب (JWT)

يتيح Tink إنشاء رموز JWT والتحقّق منها، وهي معيار مستخدَم على نطاق واسع على الويب. يوفّر تطبيق Tink's JWT مجموعة فرعية من معيار JWT المحدّد في RFC 7519، والذي يعتبره فريق Tink آمنًا للاستخدام، ويناسب مكتبة Tink جيدًا.

لا يدعم Tink أجزاء من المعيار التي نادرًا ما يتم استخدامها أو يصعب استخدامها بشكل صحيح. هذه هي القيود:

  • لا يتوافق Tink إلا مع تنسيق JWS Compact Serialization. تسلسل JWS JSON وJWE غير متاحَين.
  • لا يتيح Tink استخدام القيمة None في عنوان alg.
  • لا يتوافق تطبيق Tink إلا مع العناوين typ وalg وkid. أمّا جميع العناوين الأخرى، فهي غير متوافقة.
  • لا يسمح Tink بتحليل الرموز المميزة قبل التحقق من التوقيع أو MAC.

توقيعات JWT

إذا أنشأت كيانات مختلفة الرموز المميّزة وأثبتت ملكيتها، عليك استخدام مفاتيح غير متماثلة مع القيم الأساسية JwtPublicKeySign وJwtPublicKeyVerify. يُستخدم المفتاح الخاص لإنشاء رموز مميزة، فيما يُستخدم المفتاح العام للتحقق من الرموز المميزة. إنّ الخوارزميات المتوافقة مع هذه القواعد الأساسية هي: ES256 وES384 وES512 وRS256 وRS384 وRS512 وPS256 وPS384 وPS512.

اختيار نوع المفتاح

تستخدم توقيعات JWT أنواعًا رئيسية مختلفة عن التوقيع الرقمي العادي في Tink. هذا الإجراء مطلوب لأنّه يجب تخزين بعض البيانات الوصفية (مثل alg وkid) مع المفتاح.

ننصحك باستخدام السمة JWT_ES256 في معظم حالات الاستخدام. تحتوي الرموز المميّزة التي يتم إنشاؤها باستخدام هذا النوع الرئيسي دائمًا على عنوان kid. وإذا كنت تفضّل استخدام رموز مميزة أقصر قليلاً بدون عنوان kid، اختَر نوع المفتاح JWT_ES256_RAW. بالنسبة إلى جميع أنواع المفاتيح المتوافقة، يُرجى الاطّلاع على أنواع المفاتيح المتوافقة.

توزيع مجموعة المفاتيح العامة

يتيح Tink تحويل مجموعة المفاتيح العامة من وإلى تنسيق مجموعات JWK المحدد في RFC 7517، والذي تفهمه معظم مكتبات JWT.

لا يتيح Tink تصدير مفاتيح JWT العامة بأي تنسيق آخر. ويرجع ذلك إلى أنّ التنسيقات الأخرى لا تحتوي على البيانات الوصفية alg وkid المطلوب استخدامها في عملية التحقّق، ما يجعل استخدامها أكثر عرضة للخطأ وقد يصعّب تدوير المفاتيح.

ومن المفضّل عدم مشاركة مجموعة المفاتيح العامة مرة واحدة فقط، بل إتاحة طريقة لتحديث مجموعة المفاتيح العامة تلقائيًا. (إذا لم يكن الأمر كذلك، فإن التبديل إلى مفتاح جديد أمر صعب للغاية). ويتم ذلك غالبًا من خلال نشر مجموعة المفاتيح العامة على عنوان URL آمن وموثوق به. على الخادم الذي يتحقّق من الرموز المميّزة ببساطة أن يعيد جلب مجموعة المفاتيح العامة بشكل دوري من عنوان URL هذا، مرّة واحدة يوميًا مثلاً. لتدوير المفتاح، يجب إضافة المفتاح العام الجديد إلى مجموعة المفاتيح العامة قبل يوم واحد على الأقل من استخدامه لتوقيع الرموز المميزة. وإلا سيتم رفض الرموز المميزة الجديدة الموقعة باستخدام المفتاح الخاص الجديد من قبل الخوادم التي لا تزال تستخدم مجموعة المفاتيح العامة القديمة.

رمز JWT MAC

يتوافق Tink أيضًا مع JWT باستخدام مفاتيح متماثلة مع مفتاح JwtMac الأساسي. لا تستخدم هذه السمة الأساسية إلا إذا تم إنشاء الرموز المميزة وإثبات ملكيتها من قِبل الكيان نفسه. إنّ الخوارزميات المتوافقة مع هذه الوحدة الأساسية هي HS256 وHS384 وHS512.

اختيار نوع المفتاح

أنواع مفاتيح MAC JWT مختلفة عن أنواع مفاتيح MAC العادية. وننصح باستخدام السمة JWT_HS256 في معظم حالات الاستخدام.