تعذر تسجيل الدخول في الإصدار الأحدث باستخدام LDAP

مرحبًا يا رفاق،

عذرًا على الإزعاج هنا بشأن هذه المشكلة. قمت مؤخرًا بتحديث تثبيت Discourse الخاص بنا إلى أحدث إصدار. نحن نستخدم إضافة LDAP (GitHub - jonmbake/discourse-ldap-auth: Discourse plugin to enable LDAP/Active Directory authentication. · GitHub)، ومع ذلك، لا يتمكن المستخدمون من تسجيل الدخول.

إذا حافظت على جلستك، فلن تواجه أي مشكلة على الإطلاق. ولكن إذا حاولت تسجيل الدخول الآن، عند النقر على “تسجيل الدخول”، يتغير الرابط إلى: /auth/failure?message=csrf_detected ونحصل على رسالة الخطأ: انتهت مهلة التفويض، أو أنك قمت بتغيير المتصفح. يرجى المحاولة مرة أخرى..

هل يعرف أحد ما إذا كان هناك تغيير حديث قد يؤدي إلى هذه الحالة؟

شكرًا لكم.

أعتقد أن @david قد يكون لديه نصيحة؟

سؤال جانبي: هل توجد طريقة للعودة إلى إصدار سابق؟ لقد بحثت حول هذا الأمر، والإجماع هو تعطيل الإضافات (أو الإضافة المحددة المسؤولة عن المشكلة). ومع ذلك، لا يمكنني تعطيل هذه الإضافة لأنها الطريقة التي يدخل بها مستخدمو المنصة إليها :stuck_out_tongue:

ليس مدعومًا رسميًا، ولكن إذا كان لديك نسخة احتياطية، يمكنك حذف مجلد بيانات postgres، وإضافة إصدار الالتزام في سطر الإصدار في app.yml، وإعادة البناء، ثم استعادة النسخة الاحتياطية.

نعم، قمت بعمل نسخة احتياطية وأحاول إعادة البناء باستخدام SHA للإصدار الذي كان لدي لأنه يعمل بشكل متقطع.

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

لا أعرف ما إذا كان @david لديه أي نصيحة كما اقترح @codinghorror، لكنني مستعد لتجربة أي شيء لأن قاعدة مستخدميها مقفلة (إلا إذا احتفظوا بجلساتهم).

تحديث سريع: حاولت استخدام النسخة الاحتياطية مع لقطة للآلة كما كانت في تلك اللحظة (قبل الترقية). عند النقر على “تسجيل الدخول”، يتم إعادة تحميل الصفحة الرئيسية مرتين. حاولت إعادة البناء باستخدام معرف commit المحدد الذي كان لدي آنذاك، لكن لم ينجح الأمر، حدث خطأ في Rake لقاعدة البيانات. :no_mouth:

كنت أبحث عن تقارير أخرى حول مشكلة LDAP، ولا يبدو أن هناك أيًا منها. هل يمكن أن يكون هذا ناتجًا عن مصدر خارجي؟

آخر تحديث:

تم حل المشكلة، وتم العثور على السبب الجذري، وهو لا علاقة له بـ Discourse (آسفون يا أصدقاء!). كانت المشكلة أن الشهادة تم تحديثها وتقديمها عبر HAP، بينما لم نكن نستخدم HAP من قبل، وكان Discourse يقدمها بنفسه. لقد نسينا هذا التفصيل، مما أدى إلى ظهور خطأ CORS.

الدروس المستفادة:

  • التراجع عن تحديث Discourse ليس خيارًا عمليًا؛ الأفضل هو وجود نسخة احتياطية من الجهاز بالكامل (وهو ما كان متوفرًا، والحمد لله).
  • لم أتمكن بعد من معرفة سبب صعوبة إعادة البناء باستخدام SHA محدد وفقًا للتعليمات التي قرأتها هنا، حيث لم أتمكن من القيام بذلك.
  • من الأفضل دائمًا تقديم الشهادات عبر HAP، لكن لا تنسَ ذلك. (كملاحظة لأي شخص آخر، من الضروري إضافة العلم 'set-header X-Forwarded-Proto https' لأن Discourse يحتوي على NGINX خاص به، وهنا كان الفشل يحدث).
  • حقيقة أن لا أحد أبلغ عن نفس المشكلة (حتى مع اعتبار هذه حالة خاصة لأن الإضافة غير رسمية) أشارت إلى هذا الاتجاه (المجتمع كما هو مُصمم :P).
  • ظهرت المشكلة متأخرة (إلى الحد الذي نسينا فيه تغيير الشهادة) بسبب إعادة البناء التي تم تشغيلها بواسطة التحديث، وهو المكان الذي فشل فيه الأمر.

مرة أخرى، شكرًا لكم وندمنا على الإزعاج!