استكشاف رمز OAuth 2.0
تستعرض هذه المقالة استكشاف رمز OAuth 2.0، وهي طريقة تسمح لمورد محمي بطلب خادم التصريح للحصول على بيانات وصفية للرمز، لتحديد ما إذا كان رمز الوصول أو التحديث صالحًا.
يعرف استكشاف رمز OAuth 2.0 طريقة تسمح لمورد محمي مصرح له بطلب خادم التصريح لتحديد البيانات الوصفية المرتبطة برمز معين (إما رمز وصول أو رمز تحديث)، المقدم من عميل OAuth. بناءً على البيانات الوصفية للرمز المحدد، فإنه يتيح لمالك المورد الوصول إلى المورد المحمي.
تشمل هذه البيانات الوصفية:
- ما إذا كان الرمز نشطًا حاليًا (أو إذا كان قد انتهت صلاحيته أو تم إلغاؤه)
- الأذون التي يمنحها رمز الوصول (تنقل عادةً من خلال مجالات OAuth 2.0)
- سياق التصريح الذي منح فيه الرمز (بما في ذلك من أذن بالرمز ولأي عميل تم إصداره)
يمكن لاستكشاف الرمز تمكين المورد المحمي من طلب هذه المعلومات، بغض النظر عما إذا كانت موجودة داخل الرمز نفسه.
هناك نوعان من رموز الوصول، اعتمادًا على كيفية تشفيرها:
- مبني على معرف: يمثل الرمز معرفًا عشوائيًا يصعب التخمين مرتبطًا بالتصريح في قاعدة بيانات خادم التصريح.
- محتوى ذاتيًا: يتم ترميز التصريح داخل الرمز نفسه ويتم حمايته عبر التشفير لمنع العبث. JSON Web Token (JWT) هو المعيار الشائع لهذه الطريقة.
بالنسبة للرموز المحتوى ذاتيًا، يمكن تحليل البيانات الوصفية المتعلقة بالتصريح مباشرة من رمز الوصول. ومع ذلك، بالنسبة للرموز المبنية على معرف، يجب استخدام وظيفة استكشاف خادم التصريح للتحقق/استرجاع البيانات الوصفية.
طلب استكشاف الرمز
يتطلب استخدام رموز الوصول المبنية على معرف التحقق مع خادم التصريح عبر طلب عبر الشبكة. هناك بروتوكول قياسي لذلك يسمى استكشاف رمز OAuth 2.0 (RFC 7662).
سيقوم المورد المحمي بإرسال POST للرمز إلى نقطة نهاية استكشاف خادم التصريح، وسيحصل في المقابل على كائن JSON يحتوي على معلمات الرمز.
لاحظ أنه لا يمكن بدء طلبات الاستكشاف بشكل عشوائي؛ يجب أن تفي بأحد الشروط التالية:
- المصادقة باستخدام بيانات اعتماد (يجب أن تكون مسجلة مسبقًا مع خادم التصريح)، أو
- التصريح باستخدام رمز وصول.
نتيجة لذلك، في هذا التفاعل المحدد، يصبح المورد المحمي عميل OAuth، ويصبح خادم التصريح المورد المحمي.
فيما يلي مثال على طلب استكشاف، حيث يصادق المورد المحمي باستخدام معرف العميل وسر العميل، الذي تم الحصول عليه بعد التسجيل كعميل OAuth مع خادم التصريح.
فيما يلي مثال على طلب استكشاف يستخدم رمز وصول مباشرة. يمكن الحصول على رمز الوصول مباشرة من نقطة النهاية /token
باستخدام بيانات اعتماد تطبيق بين الآلات المسجلة ونوع الإذن client_credentials
.
استجابة استكشاف الرمز
أهم معلمة هي active
، وهي قيمة منطقية. إذا كانت true
، فإنها تشير إلى أن الرمز صالح، وسيشمل كائن JSON تفاصيل أخرى حول الرمز، مثل قيم النطاق. إذا كانت false
، فإن الرمز إما غير صالح أو منتهي الصلاحية، ويجب على المورد المحمي إرجاع استجابة 401 غير مصرح باستخدام رمز خطأ invalid_token
.
إليك مثال على استجابة لرمز صالح:
بخلاف active
، التي تعتبر مطلوبة، جميع المعلمات الأخرى اختيارية.
يمكن للمورد المحمي استخدام هذه الحقول الإضافية لتحديد أذونات الوصول، على غرار كيفية تحليل والتحقق من رمز الوصول JWT.