الخلاصة
- يجعل
draft-ietf-oauth-deferred-token-response-00منdeferral_codeاعتماداً مقيداً بالمرسل يمثل طلب رمز واحداً ما زال معلقاً؛ وهو ليس رمز وصول ولا يمنح حقاً في المورد. - يعيد طرف الإبطال وفق RFC 7009 الحالة HTTP 200 عند الإلغاء الفعلي وعندما لا يغير شيئاً. لذلك فإن إعلان الدعم والاستطلاع الذي يؤكد
access_deniedدليلان منفصلان. - إذا سُلّم رمز وصول بالفعل فهو اعتماد مستقل بعمر مستقل. إلغاء رمز التأجيل لا يبطله ولا يثبت توقف العملية المحمية.
نجاح في الرسالة لا في الحالة
يتعمد بروتوكول إبطال OAuth ألا يخبر المتصل إن كانت القيمة المقدمة صالحة. تقلل هذه الخاصية قدرة المهاجم على اختبار الاعتمادات. لكنها تعني أيضاً أن رمز HTTP لا يستطيع أن يكون مرآة للحالة الداخلية.
تتناول المراجعة 00 من Deferred Token Response قرارات لا تنتهي خلال الطلب الأول، مثل مراجعة بشرية أو تحليل احتيال أو تحقق خارجي. إذا قبل العميل نمط الإكمال المؤجل واختاره خادم التفويض، أعاد طرف الرمز HTTP 400 مع authorization_pending ورمز تأجيل مبهم وعمر وفاصل زمني للاستطلاع.
لا تمنح هذه الاستجابة وصولاً. يمثل الرمز طلباً واحداً معلقاً لدى الخادم نفسه. وإذا ارتبط الطلب الأصلي بمفتاح DPoP أو شهادة TLS متبادلة، بقي رمز التأجيل مقيداً بالمفتاح أو الشهادة نفسها. حيازة السلسلة وحدها لا تنقل هوية المرسل.
الوثيقة مسودة إنترنت نشطة في مجموعة OAuth، وليست RFC ولا قياساً لانتشار التنفيذ. قيمتها هنا أنها تكشف حدود الحالات التي يجب على التشغيل ألا يدمجها.
اسم واحد لساعتين مختلفتين
يخص expires_in في الاستجابة المؤجلة عمر رمز التأجيل. بعد انقضائه يجيب الاستطلاع expired_token. وإذا صدر لاحقاً رمز وصول، فقد تحمل الاستجابة الناجحة expires_in آخر يخص عمر ذلك الرمز.
تشابه الاسم لا يوحد الاعتمادين. استخدام الساعة الأولى لتحديث الاعتماد الثاني يخلط بين انتظار القرار وحق الوصول.
أما interval فيرد مرة واحدة، وعلى العميل الاحتفاظ به طوال الطلب. لا تكرره استجابات الانتظار، ويزيد slow_down الفاصل خمس ثوان على الأقل. سجل يحتفظ بآخر استجابة فقط لا يستطيع إثبات التزام العميل بالإيقاع.
الإشعار دعوة للاستطلاع لا نتيجة
يمكن للعميل تسجيل طرف HTTPS للإشعار. يرسل الخادم callback حين ينتهي الطلب بالنجاح أو الخطأ أو الإلغاء. يحمل الإشعار رمز التأجيل، لكنه لا يحمل الرمز النهائي ولا القرار؛ ومعناه أن الاستطلاع سيعطي الآن استجابة نهائية.
يمكن لرمز إشعار خاص بكل طلب أن يصادق المصدر. وبدونه يحتاج الطرف إلى حماية أخرى، ويجب اعتبار الرسالة إرشادية حتى يؤكدها الاستطلاع. حتى الرسالة المصادق عليها تثبت من أرسلها، لا أي فرع نهائي وقع.
توصي المسودة بمواصلة الاستطلاع ضمن الفاصل المتفق عليه. يقلل callback زمن الانتظار، بينما يقاوم الاستطلاع ضياع الإشعار أو تأخره أو حجبه. إذا تحول كل منهما إلى حكم، اختفت فائدة المسارين.
تخفي 200 نتائج متعارضة
يرسل العميل رمز التأجيل كما استلمه إلى طرف الإبطال، مع تلميح نوع deferral-code. إذا تعرف الخادم إلى الرمز وكان يخص العميل المصادق عليه، وجب أن ينقل الطلب ذرياً إلى cancelled، وأن يمنع الإشعار الذي لم يبدأ تسليمه، وأن يجعل الاستطلاع اللاحق يعيد access_denied.
لكن الرمز المجهول أو الصادر لعميل آخر أو المستخدم أو الملغى أو المنتهي يعيد HTTP 200 أيضاً من دون تغيير. هذه قاعدة RFC 7009 التي تمنع كشف صلاحية المدخل.
لذلك تعرف المراجعة 00 بيانات revocation_endpoint_token_type_values_supported. على الخادم الداعم أن يدرج نوع رمز التأجيل. أما الخادم الذي لا يعلن الدعم فسيعيد مع ذلك 200 لأي طلب إبطال. وتحذر المسودة صراحة من أن تجاوز فحص الدعم قد يفشل الإلغاء بصمت.
تبدأ سلسلة الدليل بلقطة بيانات الدعم، ثم طلب الإلغاء ونتيجته النقلية، وتنتهي باستطلاع يعيد access_denied. مكان 200 في الوسط، لا في نهاية السلسلة.
التسليم يقسم السباق إلى ثلاث حالات
قد يثبت الخادم قرار نجاح قبل أن يسلم رمز الوصول. إذا فاز الإلغاء في هذه النافذة، يعامل رمز التأجيل على أنه استُخدم ثم أُلغي؛ فلا يصدر رمز، ويجيب الاستطلاع access_denied.
إذا وصل رمز الوصول بالفعل، فلا يجوز لإبطال رمز التأجيل أن يبطله ضمناً. إنهما اعتمادان مستقلان. ومن يريد قطع الوصول فعليه إبطال رمز الوصول على حدة، ثم اختبار رفضه لدى خادم المورد عند الحاجة.
وقد يكون callback بدأ طريقه قبل الإلغاء. لا يلزم الخادم إلا بمنع ما لم يبدأ تسليمه. لذلك يمكن لإشعار متأخر أن يتعايش مع إلغاء صحيح، ولا يجوز أن يعيد فتح سير العمل.
ينبغي إذن أن يحدد وصف «ملغى» موقعه: ما زال معلقاً، أم حُسم ولم يسلم، أم سُلّم الرمز. هذا الحد هو الذي يحدد الإجراء الباقي.
قد يشيخ الرضا قبل الرمز
قد يعيش رمز التأجيل ساعات أو أياماً. خلال ذلك يمكن لصاحب المورد سحب الرضا، أو انتهاء الجلسة، أو تعطيل العميل. قبل الإصدار يجب على خادم التفويض إعادة تقييم الشروط، وإرجاع access_denied إن لم تعد صحيحة. نجاح المراجعة الخارجية لا يحل محل تفويض حالي.
وبعد الإصدار يطبق خادم المورد النطاق والسياسة المحلية. رمز صالح لا يثبت قبول عملية بعينها، والقبول لا يثبت اكتمال النتيجة التجارية.
حفظ السباق من دون حفظ السر
يضم الإيصال المحلي المرسل وملخص بيانات دعمه، وهوية العميل ومرجع مفتاح التقييد، وقيمة ربط أحادية الاتجاه بدلاً من رمز التأجيل السري، وأوقات الاستجابة والانتهاء والفاصل، ومحاولات الإلغاء، والاستطلاع النهائي، وحالة callback، وهل عبرت استجابة الرمز حد التسليم.
تطلب المسودة حماية رمز التأجيل مثل refresh token وحجبه من السجلات العامة. إذا وقع التسليم يضاف إيصال إبطال مستقل. وإذا تعلق الخطر بعمل فعلي، تضاف نتيجة القبول والمعاملة المضبوطة.
هذا شكل أولي أدنى للأدلة، لا سجل إلغاء مركزي. وفق طبقات الواقع لدى Lu Heng، فإن 200 رسالة رمزية، والإلغاء انتقال حالة، وaccess_denied ملاحظة بروتوكول، وإبطال رمز الوصول حدث اعتماد آخر، وعمل المورد هو النتيجة التنفيذية. يقوى الدليل بالنزول نحو الشيفرة العاملة لا بتكرار الرسالة الأولى.
المصادر
- Deferred Token Response rev00
- سجل مراجعات DTR
- DTR rev00 بصيغة HTML
- نص DTR rev00
- RFC 6749 — OAuth 2.0
- RFC 7009 — إبطال OAuth
- RFC 8628 — Device Authorization Grant
- RFC 8693 — Token Exchange
- RFC 8705 — OAuth mTLS
- RFC 9449 — OAuth DPoP
- RFC 9700 — ممارسات أمن OAuth
- معاملات OAuth لدى IANA
- Lu Heng — Minimum Initial Specification
- Lu Heng — On Reality Layers
- Lu Heng — Running Code Primary
إحاطة الأعضاء
سياق أعمق للملف الشخصي
سجّل الدخول بمستوى العضوية المناسب لفتح الإحاطة الكاملة وملاحظات المصادر.
للدائرة الاستراتيجية فقط
الدائرة الاستراتيجية
مفتوح لجميع القراء. افتح إحاطات الملف الشخصي بعد الانضمام وتسجيل الدخول.
انضم إلى الدائرة الاستراتيجيةلأعضاء تحالف القيادات فقط
تحالف القيادات
لأصحاب الأصول الفكرية المؤهلين وللإدارة؛ سجّل الدخول للوصول إلى إحاطات التحالف.
انضم إلى تحالف القيادات

