SSO: عدم القدرة على تسجيل الخروج

يمكنني أن أحتاج إلى بعض النصائح. :slight_smile:

لدينا ووردبريس كمزود لتسجيل الدخول الموحد (SSO) (نحن ندير الوصول إلى محتوى Discourse ومحتوى نظام إدارة التعلم باستخدام MemberPress على ووردبريس). تعمل عملية تسجيل المستخدمين الجدد وتسجيل الدخول بشكل رائع، لكنني لا أستطيع أن أجد طريقة لتسجيل الخروج.

لقد أضفت إعادة التوجيه ?request=logout، لكن بمجرد تحديث صفحة تسجيل الخروج، أعود إلى داخل الموقع مرة أخرى.

في البداية، ظننت أن الأمر قد يكون بسبب فتح ووردبريس في علامة تبويب أخرى في المتصفح، لكن السلوك يستمر حتى بعد تسجيل الخروج من ووردبريس وإغلاق تلك العلامة التبويب.

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

شكرًا لك.

إليك صورة متحركة (GIF) صغيرة توضح عمليتي تسجيل خروج متتاليتين.

وهذه لقطات شاشة لإعدادات SSO الخاصة بي في ووردبريس:

وفي Discourse:

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

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

تعتمد مزامنة تسجيل الخروج مع Discourse على خطاف ووردبريس clear_auth_cookie. من الممكن أن يكون هناك إضافة أخرى في موقعك تتداخل مع هذا.

شكرًا لك، سيمون. إنه موقع ووردبريس واحد، ويبدو أن استخدام ملف تعريف ارتباط (cookie) أمر معقول. سأبحث في هذا الجانب إذن.

أقدر نصيحتك!

براين دريغز //// tgp

إذا كان لديك موقع تطوير، جرب تعطيل جميع الإضافات باستثناء WP Discourse، وانظر ما إذا كانت المشكلة لا تزال قائمة. وإذا لم يكن لديك موقع تطوير، يمكنك تجربة تعطيل الإضافات لجلسة المستخدم الخاص بك باستخدام إضافة Health Check. وتُقدَّم تفاصيل حول كيفية استخدام هذه الإضافة لتعطيل الإضافات للجلسة هنا: Troubleshooting using the Health Check – Make WordPress Support.

انتهى الأمر. لا أملك موقع تطوير، لكن إضافة فحص الصحة عملت بشكل رائع—في المحاولة الأولى حتى. يبدو أنني سأبدأ في استكشاف MemberPress و auth_cookie. شكرًا لك، سيمون.

إليك الخطوات التي اتبعتها، في حال احتاجها شخص آخر:

  1. قمت بتثبيت إضافة Health Check.
    – وضعت الموقع في وضع استكشاف الأخطاء.
    – فعّلت إضافة WP-Discourse.
  2. فتحت موقع Discourse.
    – قمت بتسجيل الخروج.
    – تم إعادة توجيهي إلى صفحة تسجيل الدخول في ووردبريس (كان نموذج تسجيل الدخول مفقودًا).
    – لم أستطع تسجيل الدخول إلى Discourse مرة أخرى على الإطلاق. (هذا هو السلوك المطلوب.)
  3. فعّلت MemberPress
    – (أدركت أن صفحة تسجيل الدخول تستخدم حقول اسم المستخدم وكلمة المرور التي يولدها MemberPress.)
    – عاد نموذج تسجيل الدخول للظهور.
  4. فتحت موقع Discourse، وكنت مسجّل الدخول بالفعل.
  5. حاولت تسجيل الخروج، لكن تم إعادة توجيهي في حلقة إلى Discourse، ولا زلت مسجّل الدخول.

أنا أستخدم ووردبريس منذ عام 2007 ولم أسمع بهذه الإضافة من قبل حتى الآن. شكرًا مرة أخرى، سيمون!

نعم، إنها مفيدة جدًا في استكشاف الأخطاء وإصلاحها.

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

كيف يمكنني المساعدة؟

لاحظت إعداد إعادة التوجيه عند تسجيل الخروج وقمت بتعيين بعض الأهداف، لكنه لا يبدو أنه له أي تأثير.

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

المشكلة أنني لا أفهم حقًا كيفية إجراء طلب الـ API ولا أستطيع معرفة الخطوة التالية. لقد قمت بتنزيل Postman وحاولت التجربة هناك، لكنني أواجه صعوبة. لست متأكدًا من كيفية إنشاء طلب الـ API الذي أحتاجه، ولا أعرف كيف سأقوم بتنفيذه على الموقع الخارجي لاحقًا.

هل لديك أي اقتراحات حول كيفية حل هذه المشكلة؟

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

الموقع هو موقع ووردبريس يستخدم Memberpress وهو مزوّد SSO الخاص بمنتدى Discourse الخاص بي. بعد تسجيل خروجهم من ووردبريس، يمكنني إعادة توجيههم إلى عنوان URL، وأود أن يكون هذا هو الطريقة التي أخرجهم بها من Discourse في الوقت نفسه. أو ربما يمكنني إرسال طلب API عبر دالة PHP يمكنني إضافتها إلى functions.php؟

هل تستخدم إضافة WP Discourse لـ SSO؟ إذا كان الأمر كذلك، فإن تسجيل الخروج من WordPress يجب أن يسجّل خروجك من Discourse، ولكن هناك تقرير حديث يشير إلى أن هذا لا يعمل عند استخدام إضافة Memberpress على WordPress: SSO: Unable to logout. هل تواجه نفس المشكلة؟

نعم، أنا أستخدم هذا الإضافة ويبدو أن المشكلة نفسها.

عظيم! سأحاول إصلاح ذلك غدًا.

«لأنك الرجل». شكرًا لك، سيمون. :slight_smile:

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

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

@سيمون، تم إعداد العضوية لك. يجب أن تكون قد استلمت بريدًا إلكترونيًا لوضع كلمة مرور. أخبرني؟ شكرًا مقدّمًا.

لقد أنشأت أيضًا حسابًا على موقعي وأرسلت لك التفاصيل عبر الرسائل الخاصة.

@TGP هل يمكنك تجربة تغيير إعداد “إعادة توجيه تسجيل الخروج” في Discourse إلى https://www.thegearheadproject.com/?request=logout؟ يبدو أن الطلبات غير المصحوبة بـ www يتم إعادة توجيهها إلى عنوان URL الذي يحتوي على www، لكن مع عدم الاحتفاظ بمعلمة الاستعلام request=logout في عملية إعادة التوجيه.

قد لا يحل هذا المشكلة، لكن سيكون من الجيد استبعادها كسبب محتمل.

يبدو من المرجح أن مشكلات تسجيل الخروج في هذه المواقع غير مرتبطة ببعضها.

@robtech عندما أقوم بتسجيل الخروج من موقع Discourse الخاص بك، يتم تسجيلي تلقائيًا خارج موقع WordPress الخاص بك أيضًا، مما يشير إلى أن هذا الجزء من عملية تسجيل الخروج يعمل بشكل صحيح في موقعك. المشكلة التي أواجهها تتعلق بمزامنة تسجيل الخروج من WordPress إلى Discourse. فالتسجيل خارج موقع WordPress الخاص بك لا يقوم بتسجيلي خارج موقع Discourse الخاص بك.

هل يمكنك التأكد من صحة مفتاح API واسم المستخدم للنشر الذي قمت بإعداده في تبويب WP Discourse Connection؟ يجب استخدام مفتاح API واسم مستخدم للمدير. والخيار الأسهل هو استخدام مفتاح API الرئيسي لموقعك واستخدام ‘system’ كاسم مستخدم للنشر. بعد حفظ الخيارات في هذه الصفحة، يجب أن تظهر لك رسالة تفيد بأنك “متصل بـ Discourse”. تُستخدم بيانات اعتماد المدير في هذا القسم لتمكين تسجيل المستخدمين خارج Discourse عند تسجيلهم خارج WordPress.

أخبرني إذا لم يحل هذا المشكلة.