تكوين تسجيل الدخول الأحادي (SSO) مع WP Discourse و DiscourseConnect

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

الخطوة التالية

بمجرد إعداد DiscourseConnect، قد ترغب في الاطلاع على المواضيع التالية:


التعليمات

إعداد مفتاح سري

سواء كنت تقوم بإعداد WP Discourse كمزود DiscourseConnect أو كعميل، فأنت بحاجة إلى تعيين مفتاح سري. اذهب إلى علامة التبويب “DiscourseConnect Secret Key” وأدخل نصًا (يُسمح بالأرقام والحروف والرموز)، طوله 10 أحرف على الأقل. اتبع نفس القواعد المستخدمة لإنشاء كلمة مرور قوية. تأكد من حفظه عند الانتهاء.

ثم، افتح إعدادات موقع Discourse (في لوحة الإدارة)، وابحث عن “discourse connect”. إحدى الإعدادات القريبة من الأعلى ستكون discourse connect secret. الصق المفتاح السري الذي قمت بتعيينه في WP Discourse هناك، ثم انقر فوق علامة الصح الخضراء.

تسجيل الدخول إلى Discourse باستخدام WordPress (مزود DiscourseConnect)

تأكد من أن WP Discourse متصل بموقع Discourse الخاص بك وأن المفتاح السري مضبوط ( :point_up: ) قبل اتباع هذه التعليمات

للسماح للمستخدمين بتسجيل الدخول إلى Discourse باستخدام تفاصيل حساب WordPress الخاص بهم، يجب عليك إعداد WP Discourse كمزود DiscourseConnect. اذهب إلى علامة التبويب DiscourseConnect Provider في إعدادات WP Discourse، وحدد خانة الاختيار Enable DiscourseConnect Provider ثم احفظ إعداداتك.

بعد ذلك، اذهب إلى إعدادات موقع Discourse وأدخل “discourse connect” في مربع البحث لعرض جميع إعدادات DiscourseConnect الخاصة بك. أولاً، اضبط discourse connect url على عنوان URL لموقع WordPress الخاص بنا. الخطوة الأخيرة هي تحديد enable discourse connect. تأكد من استعدادك قبل تحديد هذا الخيار، لأنه بمجرد تفعيله، لن يتمكن المستخدمون من تسجيل الدخول إلى Discourse إلا باستخدام WordPress.

بمجرد تفعيل discourse connect في Discourse، للتأكد من أن الإعداد صحيح، افتح نافذة تصفح خاصة (Incognito) في متصفحك. احتفظ بنافذة المتصفح العادية (غير الخاصة) مسجلة الدخول بحساب مسؤول (فقط في حال حدوث خطأ ما وتحتاج إلى إعادة تعيين الإعدادات). في النافذة الخاصة، ستلاحظ أن زر «التسجيل» في Discourse لم يعد يظهر. انقر فوق زر «تسجيل الدخول». يجب أن ترى شاشة تسجيل دخول WordPress. أدخل بيانات اعتماد WordPress الخاصة بك لتسجيل الدخول. بعد ذلك، يجب أن يتم إعادة توجيهك إلى Discourse وتكون مسجل الدخول.

إذا حدث خطأ ما، أو لاحظت أن شيئًا ما ليس على ما يرام، ارجع إلى نافذة المتصفح العادية وقم بتعطيل enable discourse connect للسماح للمستخدمين بتسجيل الدخول إلى Discourse بشكل طبيعي. إذا لم تعد مسجل الدخول إلى حسابك الإداري في نافذة المتصفح العادية لسبب ما، راجع قسم «تعطيل DiscourseConnect عبر وحدة تحكم Discourse» في استكشاف الأخطاء وإصلاحها أدناه لاستعادة الوصول إلى موقع Discourse الخاص بك.

التحقق من البريد الإلكتروني

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

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

إزالة علامة require_activation

إذا كنت متأكدًا من أن WordPress يقوم بمصادقة عناوين البريد الإلكتروني، فيمكنك إخبار Discourse بأنه لا يحتاج إلى ذلك. لإزالة علامة require_activation تمامًا، أضف شيئًا مثل هذا إلى موقع WordPress الخاص بك (على سبيل المثال، في ملف functions.php الخاص بقالبك):

// استبدل 'my_prefix' بادئة موقعك.

add_filter( 'discourse_email_verification', 'my_prefix_discourse_email_verification' );
function my_prefix_discourse_email_verification( $require_activation ) {
    return false;
}

لإزالة علامة require_activation لمستخدمين محددين، استخدم شيئًا مثل هذا:

// استبدل 'my_prefix' بادئة موقعك.

add_filter( 'discourse_email_verification', 'my_prefix_discourse_email_verification', 10, 2 );
function my_prefix_discourse_email_verification( $require_activation, $user_id ) {
    $user = get_userdata( $user_id );
    if ( /* شرط ما يتم اختباره ضد $user */ ) {

        return true;
    }

    return false;
}

Webhook بيانات المستخدم

يوجد هذا Webhook لأسباب تاريخية - يمكن الآن ملء حقل اسم Discourse تلقائيًا باستخدام خيار «إنشاء أو مزامنة مستخدمي Discourse عند تسجيل الدخول» في مزود DiscourseConnect.

يمكن استخدام Webhook Update Userdata (في لوحة إعدادات “Webhooks”) عندما يكون WordPress هو مزود DiscourseConnect لموقع Discourse الخاص بك. يقوم Webhook تلقائيًا بملء حقل اسم المستخدم في Discourse على WordPress.

إنشاء رابط تسجيل دخول DiscourseConnect

إذا كان خيار مزود DiscourseConnect مفعلًا، فيمكنك إضافة رابط تسجيل دخول DiscourseConnect إلى موقع WordPress الخاص بك عن طريق إنشاء رابط بالهيكل التالي:

<a href="https://discourse.example.com/session/sso?return_path=/">المجتمع</a>

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

تسجيل الدخول إلى WordPress باستخدام Discourse (عميل DiscourseConnect)

لتفعيل عمل موقعك كعميل DiscourseConnect لـ Discourse، انقر فوق علامة التبويب DiscourseConnect Client. في تلك الصفحة، حدد خيارات Enable DiscourseConnect Client و Add Login Link.

الآن اذهب إلى صفحة الإدارة/الإعدادات في Discourse وابحث عن ‘discourse connect’ لعرض جميع خيارات DiscourseConnect الخاصة بك.

  • حدد إعداد ‘enable discourse connect provider’
  • انسخ DiscourseConnect Secret Key الخاص بك من WordPress إلى حقل ‘secret’ في إعداد ‘discourse connect provider secrets’ في Discourse. في حقل ‘domain’ الخاص بهذا الإعداد، أدخل نطاق موقع WordPress الخاص بك. ثم انقر فوق علامة الصح الخضراء لحفظ إعداداتك.

عند الانتهاء، يجب أن يبدو إعداد ‘discourse connect provider secrets’ في Discourse كما يلي (مع تعيين النطاق إلى نطاق WordPress الخاص بك):

يجب أن يعمل Discourse الآن كمزود DiscourseConnect لموقع WordPress الخاص بك.

افتح موقع WordPress الخاص بك في نافذة تصفح خاصة (Incognito) في متصفحك. عندما تذهب الآن إلى صفحة تسجيل الدخول، يجب أن ترى رابط «تسجيل الدخول باستخدام Discourse» أسفل نموذج تسجيل الدخول. انقر عليه وسيتم نقلك إلى نموذج تسجيل الدخول في Discourse. سجل الدخول هناك، وسيتم إعادة توجيهك إلى صفحة تسجيل الدخول في WordPress مع إشعار يقول إنه يجب عليك مزامنة حسابك مع Discourse. اتبع التعليمات في الإشعار لربط حساباتك، وسيتم بعد ذلك تسجيل الدخول إلى موقع WordPress الخاص بك عبر Discourse.

ملاحظة: يؤثر هذا السلوك فقط على المستخدمين الذين لديهم حسابات موجودة مسبقًا على كل من WordPress و Discourse. سيتمكن حسابات WordPress الجديدة التي يتم إنشاؤها عبر DiscourseConnect من تسجيل الدخول بحرية إلى WordPress في المرة الأولى التي ينقر فيها المستخدم على رابط «تسجيل الدخول باستخدام Discourse». لتسهيل تسجيل الدخول للمستخدمين الذين لديهم حسابات موجودة مسبقًا على موقع WordPress الخاص بك وعلى منتدى Discourse الخاص بك عبر Discourse، حدد خانة الاختيار Sync Existing Users by Email في علامة التبويب DiscourseConnect Client.

مزامنة تسجيل الخروج من Discourse

عند تفعيل DiscourseConnect، يمكن مزامنة تسجيل الخروج من Discourse مع موقع WordPress الخاص بك عن طريق إضافة home_url لموقعك مع معامل الاستعلام request=logout إلى إعداد موقع Discourse logout redirect. يوجد هذا الإعداد في قسم إعدادات Discourse في /admin/site_settings/category/users. إليك مثال على عنوان URL «إعادة التوجيه عند تسجيل الخروج»:

http://example.com/?request=logout

استكشاف الأخطاء وإصلاحها

إذا كنت تواجه مشاكل في استخدام WordPress كمزود DiscourseConnect لمنتدىك، فإن أول الأشياء التي يجب التحقق منها هي:

  • أن مفاتيح DiscourseConnect السرية المحددة على WordPress و Discourse متطابقة
  • تأكد من أنك حددت Enable DiscourseConnect Provider على موقع WordPress الخاص بك
  • تأكد من أنك أدخلت discourse connect url الصحيح على Discourse.

“خطأ في تسجيل الدخول” عند استخدام DiscourseConnect

إذا تلقى المستخدمون رسالة «خطأ في تسجيل الدخول» عند محاولة تسجيل الدخول إلى Discourse، يرجى الاطلاع على:

Debug and fixing common DiscourseConnect issues.

تعطيل DiscourseConnect

إذا لم يكن DiscourseConnect يعمل بالنسبة لك، فيمكنك إيقافه عن طريق تعطيل إعداد الموقع enable discourse connect. إذا لم تكن مسجل الدخول إلى حساب مسؤول في مكان ما لتعطيله، فلا تقلق، فهناك عدة طرق يمكنك من خلالها العودة وإيقافه.

تسجيل الدخول عبر /users/admin-login

افتح نافذة متصفح جديدة وأدخل عنوان URL الخاص بمنتدىك في شريط العنوان متبوعًا بـ /users/admin-login، على سبيل المثال:

https://community.mysite.com/users/admin-login

يجب أن ترى حقل إدخال يطلب منك البريد الإلكتروني للمسؤول. بعد تقديم بريدك الإلكتروني، ستستلم بريدًا إلكترونيًا يحتوي على رابط يسمح لك بتسجيل الدخول مباشرة إلى حسابك الإداري. بعد ذلك، يمكنك الذهاب إلى إعدادات الموقع وتعطيل enable discourse connect لإيقاف DiscourseConnect.

إذا لم ينجح هذا لسبب ما، فلا تقلق، لا يزال بإمكانك إيقاف DiscourseConnect عبر وحدة تحكم الخادم (:point_down:)

إيقاف DiscourseConnect عبر وحدة تحكم الخادم

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

cd /var/discourse
./launcher enter app
rails c
SiteSetting.enable_discourse_connect=false
exit
exit
11 إعجابًا

ماذا لو لم تكن لدي هذه الخيارات في Discourse الخاص بي؟ :confused:

أهلاً بك @LosHunterros في Meta!

Discourse Connect غير مضمن في خطة الاستضافة الأساسية
Screenshot_20240507_204846_Chrome

4 إعجابات

شكرا على ردك

إعجاب واحد (1)

أحتاج الآن إلى مستوى 101 حقًا. أو نعم أو لا بسيطة.

أحتاج إلى وصول سهل من ووردبريس إلى منتداي لهؤلاء العملاء. نظرًا لأنهم أنشأوا حسابًا في ووردبريس، سأستخدمه كمزود.

لكن لدي مشاكل مع الذكاء الاصطناعي الخاص بـ Discourse الآن. لقد فهمت أن DiscourseConnect سيستولي على جميع عمليات تسجيل الدخول الأخرى، مثل Google و Microsoft والمحلية. لكن الذكاء الاصطناعي متأكد بقوة من أن هذا ليس صحيحًا، إذا قمت بتعيين discourse connect allowed redirect domains.

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

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

كانت فكرتك الأولية صحيحة. الذكاء الاصطناعي خاطئ: انظر المزيد.

للأسف، نعم.

إعجاب واحد (1)

لقد اتبعت دليل الإعداد حتى النقطة التي ينبغي أن يعمل فيها تسجيل الدخول الموحد (SSO). عندما أزور موقع Discourse الخاص بي في نافذة متصفح متخفية، يتم توجيهي على الفور إلى الصفحة الرئيسية لموقع WordPress الخاص بي مع سلسلة استعلام طويلة في عنوان URL ولا توجد خيارات تسجيل دخول مرئية.

هل هذا هو السلوك المتوقع في هذه المرحلة؟
هل أحتاج الآن فقط إلى إنهاء بناء جانب WordPress (تسجيل الدخول/التسجيل وما إلى ذلك)، أم أنني أخطأت في التكوين؟

مرحباً مايك، أهلاً بك. يجب أن يتم توجيهك إلى صفحة تسجيل الدخول القياسية لـ Wordpress. أول ما يتبادر إلى الذهن هو أن السمة (theme) الخاصة بك (أو إضافة) توفر صفحة تسجيل دخول مخصصة. كيف تبدو صفحة تسجيل الدخول الخاصة بك عادةً؟

مرحباً أنجوس، شكراً لك! :slight_smile:

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

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

مرحباً مايك، إليك مقطع فيديو قصير سجلته للتو يوضح تثبيتاً عاملاً على الكود الحالي.

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

إعجاب واحد (1)

مرحباً أنجيس،

شكراً جزيلاً لك على إعداد هذا الفيديو، دعم رائع!

لقد قدمت لقطات شاشة لكل قسم (مع طمس المعلومات الحساسة)

image

image

image

في الصورة أعلاه، لم يتم تحديد هذا في الواقع (عفواً) ولكن، عندما أزور المنتدى في متصفح التصفح المتخفي، يتم إعادة توجيهي تلقائياً إلى /wp-login.php - لا يتم عرض المنتدى وزر تسجيل الدخول كما هو الحال لديك.

image

لست منزعجاً بشكل مفرط من أنه يذهب مباشرة إلى صفحة wp-login الآن، ولكن الحصول على إمكانية عرض المنتدى مباشرة هو دائماً ميزة إضافية!

@angus لقد اكتشفت الأمر… خلال “ماذا أفعل” الأولي، قمت بحظر المجتمع بهذا؛

image

أعتذر عن كوني مصدر إزعاج، هذه هي وضعية بدء التشغيل :dashing_away:.

شكراً مرة أخرى على الدعم الرائع - أنا متأكد من أنني سأعود.

إعجابَين (2)

سعيد لأنك تمكنت من حلها!

مرحباً أنجوس، أتساءل عما إذا كان بإمكانك المساعدة في هذه المشكلة التي أواجهها، لم أتلق أي رد على موضوعي:

في الأساس، إذا قمت بإخفاء هوية مستخدم، فإن إضافة تسجيل الدخول الموحد (SSO) تقوم بإنشاء حساب جديد له. هل هناك طريقة لتعطيل المستخدمين بشكل فردي لمنع إنشاء حسابات جديدة لهم، وهل يمكن أن تتم المزامنة تلقائيًا عند حظر شخص ما أو إخفاء هويته؟

ربما قم بإخفاء هوية المستخدم ثم اجعل عنوان بريده الإلكتروني هو عنوان SSO. أو اجعل ووردبريس (WordPress) يرفض المستخدم (يبدو هذا هو الحل الحقيقي - يجب أن يرفض ووردبريس المستخدم)

كيف أجعل ووردبريس يمنع المستخدم من تسجيل الدخول عبر تسجيل الدخول الموحد (SSO)؟ هذا هو الحل الذي أعتقده.

هذا سؤال خاص بـ ووردبريس (WordPress). :wink:

لقد بحثت في الإنترنت ويبدو أنه يمكنك تغيير دورهم إلى “لا يوجد دور في هذا الموقع”.

أعلم ما كنت أعنيه، أريد أن يتمكن المستخدم من الاستمرار في استخدام الموقع ولكن لا يمكنه إنشاء حساب في المنتدى.

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

إذًا أعتقد أنك ستحتاج إلى تعليقها في “ديسكورس” (discourse). إذا كنت بحاجة إلى إخفاء هوية محتواها، فستحتاج إلى القيام بذلك ثم إنشاء الحساب الذي سيتم تعليقه.

مرحباً @Shauny لقد رددت على منشور الدعم الأصلي الخاص بك:

إعجاب واحد (1)