تتيح Tink إنشاء رموز JWT وإثبات صحتها، وهي معيار مستخدَم على نطاق واسع على الويب. يوفّر تنفيذ JWT في Tink مجموعة فرعية من معيار JWT المحدّد في RFC 7519 التي يرى فريق Tink أنّها آمنة للاستخدام وتناسب مكتبة Tink بشكل جيد.
لا تتوافق مكتبة Tink مع أجزاء من المعيار نادرًا ما يتم استخدامها أو يصعب استخدامها بشكل صحيح. في ما يلي القيود:
- لا تتوافق Tink إلا مع تنسيق JWS Compact Serialization. لا تتوفّر JWS JSON Serialization و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 Sets المحدّد في RFC 7517، والذي تفهمه معظم مكتبات JWT، والعكس.
لا تتيح Tink تصدير مفاتيح JWT العامة بأي تنسيق آخر. والسبب في ذلك هو أنّ التنسيقات الأخرى لا تحتوي على البيانات الوصفية alg
وkid
التي سيتم استخدامها في عملية التحقّق، ما يجعل استخدامها أكثر عرضة للأخطاء وقد يصعّب عملية تدوير المفاتيح.
من الأفضل عدم مشاركة مجموعة المفاتيح العامة مرة واحدة فقط، بل توفير طريقة لتعديلها تلقائيًا. (إذا لم يكن الأمر كذلك، سيكون من الصعب جدًا التبديل إلى مفتاح جديد). ويتم ذلك غالبًا من خلال نشر مجموعة المفاتيح العامة على عنوان URL موثوق وآمن. على الخادم الذي يتحقّق من الرموز المميزة أن يعيد جلب مجموعة المفاتيح العامة بشكل دوري من عنوان URL هذا، مثلاً مرة واحدة في اليوم. لتدوير المفتاح، يجب إضافة المفتاح العام الجديد إلى مجموعة المفاتيح العامة قبل يوم واحد على الأقل من استخدامه لتوقيع الرموز المميزة. وفي حال عدم تنفيذ ذلك، سترفض الخوادم التي لا تزال تستخدم مجموعة المفاتيح العامة القديمة الرموز المميزة الجديدة الموقَّعة باستخدام المفتاح الخاص الجديد.
JWT MAC
تتيح Tink أيضًا استخدام رموز JWT المميزة مع المفاتيح المتماثلة باستخدام الوحدة الأولية JwtMac
. لا تستخدِم هذا النوع الأساسي إلا إذا كانت الجهة نفسها هي التي تنشئ الرموز المميزة وتتحقّق منها. الخوارزميات التي يتيحها هذا العنصر الأساسي هي HS256
وHS384
وHS512
.
اختيار نوع المفتاح
تختلف أنواع مفاتيح MAC الخاصة برمز JWT عن أنواع مفاتيح MAC العادية. ننصحك باستخدام
JWT_HS256
في معظم حالات الاستخدام.
أمثلة على حالات الاستخدام
اطّلِع على أريد إنشاء رموز JWT والتحقّق منها.