توثيق Nibleaf

حماية التوثيق بوصول خاص للقرّاء

اختر وصول مساحة العمل أو وصول القرّاء، واضبط الجماهير وتسليم JWT من البوابة، وتعافَ سريعًا من اختراق تكامل القرّاء.

  • 3 دقيقة قراءة
  • آخر تحديث 22‏/08‏/2026

يوفّر Nibleaf ثلاثة أوضاع صريحة للوصول إلى الموقع المنشور:

  • PUBLIC هو الوضع الافتراضي ويحافظ على المواقع العامة الحالية.
  • يتطلب WORKSPACE عضوًا في مساحة عمل Nibleaf. تُرحّل المواقع الحالية التي تحمل config.visibility = private إلى هذا الوضع تلقائيًا.
  • يستخدم READERS هويات مخصصة للقرّاء. لا يستطيع القرّاء فتح لوحة التحكم أو تعديل المحتوى أو استهلاك مقعد مؤلف.

يضبط المسؤولون الوضع من إعدادات الموقع ← المصادقة. وتدير الشاشة نفسها الجماهير، ومنح الوصول إلى الصفحات، والدعوات، وتسليم JWT، وأحداث التدقيق، والإبطال الطارئ.

الدعوات والجلسات

يُسنِد المسؤول جمهورًا واحدًا على الأقل ويرسل دعوة. تحتوي الرسالة الإلكترونية على رمز تفعيل عشوائي أحادي الاستخدام تنتهي صلاحيته بعد سبعة أيام. لا يُخزّن سوى تجزئة SHA-256. ينشئ التفعيل ملف تعريف ارتباط للقارئ خاصًا بالمضيف، بسمتَي HttpOnly وSameSite=Lax؛ وتضبط عمليات النشر عبر HTTPS السمة Secure أيضًا. تُجزَّأ رموز الجلسات ويمكن إبطالها منفردةً أو كلها دفعة واحدة.

استخدم النطاق المخصص الأساسي قبل دعوة القرّاء. ينشئ Nibleaf رابط التفعيل على ذلك النطاق حتى ينتمي ملف تعريف الارتباط الخاص بالمضيف إلى أصل توثيق العميل. تؤدي إعادة الدعوة إلى إبطال الدعوات غير المستخدمة. ويؤدي إبطال قارئ إلى إبطال دعواته وكل جلساته النشطة فورًا.

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

تسليم JWT من بوابة العميل

اضبط رابط مُصدِر (iss) مطابقًا تمامًا، وجمهورًا (aud)، وإما رابط JWKS يعمل عبر HTTPS أو JWKS عامًا مضمّنًا، وربطًا بين قيم مطالبة المجموعة ومعرّفات جمهور Nibleaf. لا تلصق مفاتيح خاصة أو أسرارًا متناظرة مطلقًا.

أرسل إقرارًا موقّعًا إلى:

http
POST /api/public/reader-access/jwt/{projectId}
Content-Type: application/json

{"token":"eyJ...","redirect":"/guides/getting-started"}

تضبط الاستجابة ملف تعريف ارتباط القارئ. ويجب أن تكون عمليات إعادة التوجيه مسارات من الأصل نفسه. يجب أن تستخدم الإقرارات RS256 أو PS256 أو ES256 أو EdDSA وأن تحتوي على:

  • قيمة iss مطابقة تمامًا وقيمة aud مطابقة؛
  • قيمة sub ثابتة؛
  • قيمتي iat وexp ضمن العمر المضبوط وهامش تفاوت الساعة؛
  • قيمة jti فريدة وأحادية الاستخدام؛
  • مطالبة المجموعات المضبوطة، مربوطة بجمهور واحد أو أكثر.

تملأ المطالبتان الاختياريتان email وname ملف القارئ الشخصي. وتُدعم المسارات المتداخلة مثل profile.groups. تُخزّن قيمة jti المستخدمة كتجزئة مرتبطة بالمُصدِر حتى انتهاء الصلاحية ولا يمكن إعادة استخدامها. لا تُكتب الرموز أو مواد التوقيع في سجلات التدقيق مطلقًا.

تبديل المفاتيح

انشر المفتاحين العامين القديم والجديد مع قيمتي kid مختلفتين، وابدأ التوقيع بالمفتاح الجديد، وانتظر مدة تتجاوز أقصى عمر للإقرار مضافًا إليه زمن تخزين JWKS المؤقت، ثم أزل المفتاح القديم. استخدم اختبار JWT قبل تحويل الزيارات؛ إذ يتحقق الاختبار من إقرار من دون إنشاء جلسة أو استهلاك قيمة jti الخاصة به.

التعافي والإبطال الطارئ

إذا احتُمل اختراق مفتاح البوابة أو الربط:

  1. اختر إبطال كل الوصول في حالة طارئة لإبطال الجلسات والدعوات وتعطيل تسليم JWT.
  2. بدّل مفتاح توقيع البوابة وانشر JWKS العام الجديد.
  3. راجع سجل تدقيق المصادقة وصحح إعدادات المُصدِر/الجمهور/الربط.
  4. اختبر إقرارًا جديدًا، وأعد تفعيل التسليم، وأعد دعوة القرّاء الذين لا يستخدمون SSO عند الحاجة.

ضمانات التسليم والتخزين المؤقت

يُتخذ قرار الوصول من جهة الخادم لحمولات الموقع/الصفحة، والتنقل، والبحث، وسجل التغييرات، وخريطة الموقع، وrobots، وllms.txt، وllms-full.txt، وكتابات التحليلات، والأصول المخزّنة. تعيد الطلبات الخاصة غير المصادق عليها استجابات «غير موجود». تستخدم الاستجابات المعتمدة على بيانات الاعتماد Cache-Control: private, no-store وVary: Cookie, Authorization؛ ولا يمرر SSR إلا بيانات اعتماد القارئ إلى طلبات API الداخلية. تظل معاينات المسودات مقصورة على أعضاء مساحة العمل.