مشكلة في Drupal Discourse SSO

مرحبًا،

أنا جديد في Discourse، وأحاول إعداد منتداي مع موقع Drupal باستخدام وحدة SSO الخاصة بـ Discourse. لقد اتبعت تعليمات الوحدة وهذا الموضوع، ولكن للأسف يعيد عنوان URL “mydrupalwebsite.com/discourse/sso” خطأ 404.

منذ نشر هذا الموضوع، ظهرت إعدادات جديدة للوحدة تتضمن مفتاح API، لكنني لا أعرف ما الذي يجب فعله به.

هل واجه شخص آخر نفس المشكلة؟

شكرًا لكم

هل يمكنك مشاركة رابط وحدة Drupal التي تستخدمها؟ إذا كانت الوحدة المرتبطة في هذا المنشور، فقد تم تحديثها آخر مرة في مارس 2015، لذا فمن المرجح جدًا أن تكون هناك مشاكل معها.

تم تحديث وحدة Drupal SSO هذه في ديسمبر 2019: Discourse SSO | Drupal.org. سيكون من الجيد تجربتها.

أنا أستخدم الخيار الثاني مع أحدث إصدار.

لقد قمت بإعداد سر SSO وعنوان URL الخاص بـ SSO، وعندما أحاول تسجيل الدخول، أرى أن هناك بعض عمليات إعادة التوجيه كما هو متوقع، لكن /discourse/sso يعرض صفحة 404.

هل يحتوي الوحدة على أي توثيق؟ العملية المعتادة لتمكين SSO هي إضافة نقطة نهاية SSO إلى إعداد موقع Discourse sso url، وإضافة مفتاح سري لـ SSO إلى إعداد الموقع sso secret، ثم تمكين إعداد الموقع enable sso. عند إعداد ذلك لأول مرة، قد ترغب أيضًا في تمكين إعداد الموقع verbose sso logging. مع تمكين هذا الإعداد، ستحصل على تفاصيل حول أخطاء SSO في سجلات الأخطاء الخاصة بموقعك (الموجودة في لوحة الإدارة / السجلات / سجلات الأخطاء).

عند تفعيل إعدادات Discourse، يجب التأكد من إضافة عنوان URL لموقع Discourse ومفتاح sso secret إلى موقع مزود SSO.

بناءً على الخطأ الذي تواجهه، يبدو من المرجح أن إعداد الموقع enable sso لم يتم تفعيله على موقع Discourse الخاص بك.

إذا واجهت مشاكل في الوصول إلى موقع Discourse بعد تمكين SSO، يمكنك كمسؤول تجاوز تسجيل الدخول عبر SSO بالانتقال إلى /u/admin-login في موقع Discourse الخاص بك. أدخل عنوان بريدك الإلكتروني للمسؤول في النموذج الموجود على الصفحة. سيتم إرسال رابط تسجيل دخول لمرة واحدة إليك.

شكرًا جزيلاً لمساعدتك. للأسف، لا يحتوي الوحدة على توثيق أكثر مما هو موجود على صفحة مشروعها.

لقد قمت فقط بفحص enable sso و verbose sso logging، وملأت الحقول sso url بـ "mywebsite/discourse/sso، وحقل sso secret`.

اتبعت إرشادات وحدة Drupal، وقمت بإدخال عنوان URL الخاص بمنتدى Discourse و secret sso في الحقول المقابلة.

ما زلت أحصل على خطأ 404 عند محاولة تسجيل الدخول، مع هذا العنوان:
https://mywebsite/discourse/sso?sso=bm9uY2U9MTJlMmI4ZWNjNzU4ZGE3YTg5ZWIwZDI2MmM5ZTUzOWEmcmV0dXJuX3Nzb191cmw9aHR0cHMlM0ElMkYlMkZmb3J1bXMuc2VnYS1tYWcuY29tJTJGc2Vzc2lvbiUyRnNzb19sb2dpbg%3D%3D&sig=96726cef3a6bb69a0863f66fb0e09ce3edb1ea77f3fd2d9e69cdaf932aede6a2

إليك السجل: verbose_sso.txt (5,9 Ko)

إذا لم تكن المشكلة في إعداداتي في Discourse، فسأعود إلى مطور الوحدة مرة أخرى.

شكرًا مرة أخرى.

لقد تفحصتُ مدخل السجل، لكنه لا يُظهر الخطأ — إنه مجرد مدخل للسجل يوضح بدء عملية SSO في Discourse. يجب أن يُنشأ مدخل آخر للسجل بعد ذلك بوقت قصير ويُظهر الخطأ فعليًا. هل يمكنك المحاولة في تكرار العملية مرة أخرى؟ يجب أن تكون هناك مدخلات سجل SSO مفصلة لكل محاولة تسجيل دخول. يُظهر المدخل الأول بدء العملية في Discourse، بينما سيتعلق المدخل الثاني بكيفية تعامل Discourse مع الاستجابة التي تلقاها من موقعك الإلكتروني.

من الممكن أن يكون هناك رسالة خطأ أخرى ذات صلة لا تبدأ بالنص Verbose SSO log. يرجى مراجعة مدخلات السجل من حول الوقت الذي قمت فيه بطلب SSO.

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

نعم، يبدو ذلك صحيحًا بالنسبة لي. يمكنك محاولة فحص الطلبات التي يتم إجراؤها عن طريق فتح أداة فحص الويب في متصفحك والانتقال إلى علامة التبويب “الشبكة”. اختر خيار “حفظ السجلات” في تلك العلامة التبويب، ثم انقر فوق رابط تسجيل الدخول في موقع Discourse الخاص بك.

مرحبًا،

تحديث بسيط بخصوص هذا الأمر: تم إصلاح وحدة Discourse SSO ولم تعد تتسبب في تعطل الموقع.

لكنها لا تزال لا تعمل، حيث يستحيل تسجيل الخروج بشكل صحيح بعد تسجيل الدخول مرة واحدة. تم فتح مشكلة أخرى في حال رغب أحدكم في الاطلاع عليها.

شكرًا لمتابعتك لهذا الأمر! يرجى إخبارنا إذا تم حل المشكلة الجديدة في الوحدة.

حسناً، أنا أواصل تحقيقاتي.

هل هناك أي سبب يمنعني من تسجيل الدخول إلى Discourse عبر SSO باستخدام حسابات مختلفة؟ ربما إعدادات ملفات تعريف الارتباط (Cookies)؟

عند تفعيل SSO، إذا قمت بتسجيل الخروج ثم حاولت تسجيل الدخول مرة أخرى، يتم تسجيل الدخول تلقائياً إلى الحساب الأول.

لا أواجه أي مشكلة عند تعطيل SSO.

يبدو أن تسجيل الخروج من Discourse غير متزامن مع تسجيل الخروج من موقع مزود SSO. نظرًا لأنك ما زلت مسجّل الدخول إلى موقع مزود SSO، فإنك في المرة التالية التي تنقر فيها على رابط تسجيل الدخول في Discourse، يتم مصادقتك بناءً على تسجيل دخولك إلى مزود SSO.

يمكن استخدام إعداد الموقع “إعادة توجيه تسجيل الخروج” في Discourse لتسجيل المستخدمين خارج موقع مزود SSO. عند تسجيل مستخدم الخروج من Discourse، سيتم إعادة توجيهه تلقائيًا إلى عنوان URL هذا. سيتعين على مزود SSO معالجة عنوان URL لتسجيل خروج المستخدم. ومع ذلك، أنا لست على دراية كافية بـ Drupal لأعرف ما الذي يجب تنفيذه لتحقيق ذلك.

حسنًا، تم حل المشكلة. ملخصًا:

  • هذه الوحدة النمطية تعمل بشكل جيد، لكن هناك خطأ بسيط يتعلق بصورة مستخدم دروبال، ومع ذلك فإن تصحيحًا قيد الانتظار.
  • هذا المنشور غير دقيق فيما يتعلق بإعدادات ديسكورش: يجب أن ينتهي sso_url بـ/discourse_sso، وليس /discourse/sso.
  • إذا كنت ترغب في القدرة على تسجيل الدخول بحسابات متعددة مختلفة، فيجب عليك تعيين http://mywebsite/user/logout كإعادة توجيه لتسجيل الخروج، وتعطيل إضافة Ghostery في متصفحك لموقع ديسكورش إذا كنت تستخدم هذه الإضافة.

شكرًا لك على مساعدتك، @simon!