Summary

  • تفرض المراجعة 01 أن يغطي as_signature معرّف الدليل id وكائن user_confirmation كاملًا: النص المعروض، فعل المستخدم، والطابع الزمني.
  • يستبعد التوقيع صراحة audit_trail، مع أن هذا السجل هو الذي يشرح التوسع الدلالي ويحمل proposal_ref إلى الاقتراح الأصلي.
  • يحمي التوقيع الخارجي رمز JWT الموقّع كاملًا. أما بعد استرجاع دليل من رمز معتم، فيحمي TLS القناة ولا يحوّل السجل المجاور إلى بيان مستقل موقّع.

مرجع بلا عقد استرجاع

تمنح draft-liu-oauth-authorization-evidence-01 المراجع دورًا مهمًا. يفترض proposal_ref أن يشير إلى اقتراح التفويض الأصلي قبل تقييم السياسة أو تقليص النطاق أو تعديل الموافقة. بذلك يستطيع المراجع، نظريًا، مقارنة الطلب الأول بما أُجيز في النهاية.

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

هذه الفجوة مهمة لأن الاقتراح يحمل المعنى التشغيلي. قد يرى المستخدم عبارة «اشتر سماعات رخيصة»، بينما يحتاج التنفيذ إلى حد للسعر وعملة وفئة وكمية وبائع. المستوى medium يصف أن تفسيرًا مهمًا وقع، لكنه لا يعيد بناء الاختيارات.

لا يعني ذلك وجود ثغرة أو تلاعب. يمكن للنشر الفعلي أن يحتفظ باقتراح غير قابل للتغيير، أو يربطه ببصمة، أو يوقع غلافًا أوسع. الاستنتاج الأضيق هو أن المرجع وحده ليس إيصالًا محمولًا للتحول الدلالي.

ما الذي يوقّعه الخادم فعلًا

يتكون قلب الدليل من id وuser_confirmation وJWS منفصل. تحتفظ الموافقة بالمحتوى الدقيق الذي عُرض، ووصف فعل التأكيد، ووقت NumericDate.

تعطي الفقرة 3.6 خوارزمية محددة: يُنشأ كائن JSON جديد لا يحتوي إلا على id وuser_confirmation، ويُطبّع وفق JCS في RFC 8785، ثم توقّع بايتاته. يجب ألا تدخل حقول الامتداد إلى هذا الكائن. لذلك فإن خروج سجل التدقيق من النطاق حكم صريح، لا قراءة تخمينية.

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

كما لا يثبت التوقيع تنفيذ العملية. تسجل خوادم الموارد معرّف الدليل ووقت التأكيد وملخص العرض منفصلة عن العملية المنفذة ونجاحها أو فشلها. الموافقة والقرار والتنفيذ والأثر الخارجي سجلات مختلفة.

تجربتان كاملتان وإسقاط واحد

أنشأنا محليًا كائنين يحملان المعرّف والنص والفعل والوقت نفسها. حمل الأول مستوى medium ومرجع اقتراح بحد 50، وحمل الثاني high ومرجعًا بحد 500. اختلف الكائنان الكاملان وبصمتاهما، لكن الإسقاط المطلوب في الفقرة 3.6 بقي متطابقًا، وكانت SHA-256 في الحالتين aec26fa5351ab57f144fd6b387b297969f73e34ec3ea5a557592a0b2d3a7b512.

هذه إعادة بناء لنطاق البايتات فقط. لا تتحقق من JWS المختصر في المسودة، ولا تكسر JWS أو JCS، ولا تختبر منتجًا حقيقيًا، ولا تثبت خادمًا خبيثًا أو معاملة أو خسارة.

الغلاف الكامل يغيّر الصورة

إذا كان الدليل داخل رمز وصول JWT موقّع وفق RFC 9068، فإن التوقيع الخارجي يحمي الكائن المضمّن كله، بما فيه سجل التدقيق. تعديل السجل داخل JWT سليم سيظهر عند التحقق من التوقيع الخارجي. لا يجوز مساواة ضيق التوقيع الداخلي بانعدام حماية الكائن الكامل.

تختلف الرحلة مع الرموز المعتمة. يسترجع خادم الموارد البيانات بواسطة استبطان RFC 7662 أو نقطة مخصصة. تصف المسودة as_signature بأنه حماية السلامة الوحيدة لسجل الدليل في هذه الحالة وتطلب TLS. يحمي TLS الطرفين والاستجابة وقت الجلب. لكنه بعد الاستخراج والتخزين وإعادة التوجيه لا يوسع مدخل JWS ولا يصبح توقيعًا يمكن لطرف ثالث التحقق منه على سجل التدقيق.

والاستبطان يعرض حالة تفويض راهنة: معنى active يقرره الخادم، وقد تختلف الاستجابة حسب خادم الموارد، ويبادل التخزين المؤقت الحداثة بالحمل. لا يتحول تلقائيًا إلى أرشيف دائم لتفسير النية.

السياسة تجيب عن سؤال آخر

تفصل مسودة Rego المصاحبة بين الدليل الذي يسجل لماذا أجيزت العملية والسياسة التي تحدد ما يجوز للوكيل فعله وما يقيمه خادم الموارد. في المثال الكامل، authorization_evidence وrego_policy كائنان متجاوران. لا يربط التوقيع الداخلي URI السياسة أو نقطة الدخول أو مدخلات التقييم بالموافقة.

يمكن لتوقيع JWT الخارجي أن يربط التمثيل المركب ما دام الرمز محفوظًا كاملًا. أما النظام المعتم فيحتاج إلى تصميم واضح للجلب والاحتفاظ. من دونه، تختزل كلمة «مصرح» العرض والتفسير والسياسة والقرار والإرسال والتنفيذ والنتيجة، وتمنح المكوّن اللاحق سلطة ملء الفراغ.

جواز تفسير بدل إشارة وحيدة

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

هذا اقتراح تحليلي من Daniel Kade، وليس مطلبًا في المراجعة 01. يمكن إبقاء المحتوى الحساس في سجلات مضبوطة الوصول وربطه بالبصمات. المواصفة الدنيا لا تجمع كل شيء، بل تترك نقاطًا ثابتة تكفي لإعادة بناء السلطة التي حوّلت العبارة إلى فعل.

Sources and limits

جُمّدت الملاحظات في 30 سبتمبر 2026 بتوقيت Asia/Shanghai. المراجعة 01 Internet-Draft فردية نشطة، وليست RFC أو إجماع مجموعة OAuth أو دليل تبنٍّ. تثبت الإعادة المحلية إسقاط التوقيع المحدد فقط. لا تثبت كسر JWS/JCS أو تعديلًا أثناء TLS أو خلل تنفيذ أو سوء نية أو خسارة أو عملية مكتملة. قد تتغير المسودة أو تستبدل أو تنتهي.