يتيح 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
في معظم حالات الاستخدام.