هل قام أي شخص بإعداد الدخول الموحد (SSO) لموقع Townnews؟
لستُ على علم بأي مواقع تستخدم Townnews أو BLOX CMS مع مصادقة SSO الخاصة بـ Discourse. هل تعرف ما إذا كان من الممكن إضافة كود إلى موقع يستخدم هذه الخدمة؟ إذا أمكن إضافة كود مصادقة SSO الخاصة بـ Discourse إلى الموقع، فقد يكون من الممكن استخدامه كمزود مصادقة SSO لـ Discourse.
عذراً، أنا مبتدئ، لكنني أعني استخدام townnews كمصدر لتسجيل الدخول الموحد (SSO). ما هو الكود الذي أحتاج لإضافته إلى الموقع؟
هذا يعني أن TownNews ستكون موفر خدمة SSO لموقع Discourse الخاص بك. لاستخدام تطبيق SSO في Discourse، يجب أن تتمكن من إضافة كود إلى الخدمة التي تعمل كموفر لـ SSO. يجب أن يتصل هذا الكود بعملية تسجيل الدخول في الخدمة. يمكنك العثور على تفاصيل الكود الذي يجب إضافته هنا: الدعم الرسمي لتسجيل الدخول الموحد لـ Discourse (SSO).
وللحصول على مثال عملي للكود، راجع كيفية تنفيذ إضافة WordPress لدينا لـ SSO: wp-discourse/lib/sso-provider at main · discourse/wp-discourse · GitHub.
قد يكون من الممكن أيضًا تسجيل دخول المستخدمين إلى Discourse عبر TownNews باستخدام OAuth2. سيكون هذا ممكنًا إذا كان بإمكان TownNews العمل كموفر لـ OAuth2. توجد تفاصيل حول إعداد تسجيل الدخول عبر OAuth2 مع Discourse هنا: الدعم الأساسي لـ OAuth2. قبل قضاء الكثير من الوقت في ذلك، سيكون من الجيد التأكد مما إذا كان بإمكان TownNews العمل كموفر لـ OAuth2. يجب أن يكون من الممكن معرفة ذلك من خلال وثائقهم.
أنا أحاول التعامل مع مزود موقعي، لكنني اعتقدت أنه من الجيد أن أشاركك هذا لترى ما إذا كان يحتوي على معلومات يمكن أن تساعدني. أقدر وقتك.
إعادة التوجيه إلى نقطة نهاية المزود
كل موقع BLOX-CMS يحتوي على نقطة نهاية للمصادقة الموحدة متاحة في نفس عنوان URL المحجوز:
https://www.example.com/tncms/auth/federated/
يبدأ موقع المستهلك عملية المصادقة عن طريق إعادة توجيه متصفح المستخدم إلى هذا العنوان. تتطلب نقطة نهاية معلمة return يجب تعيينها إلى عنوان URL لنقطة نهاية موقع المستهلك.
مثال على عنوان URL:
https://www.example.com/tncms/auth/federated/?return=http://vendor.com/login/
تقبل نقطة النهاية أيضًا معلمات إضافية:
-
source : سيتم تمرير هذه المعلمة وقيمتها إلى عنوان URL لتسجيل الدخول في الموقع إذا لزم الأمر لمصادقة المستخدم. قد تستجيب القوالب لهذه القيمة لتخصيص واجهة نموذج تسجيل الدخول. الافتراضي هو القيمة ‘federated’ إذا لم يتم تحديدها.
-
reauth : تعيينها إلى قيمة صحيحة لإجبار عرض صفحة تسجيل الدخول بغض النظر عن حالة تسجيل دخول المستخدم الحالية.
إعادة التوجيه إلى نقطة نهاية المستهلك
يتم تزويد مزود الخدمة بعنوان URL لنقطة نهاية موقع المستهلك عبر معلمة return عند إعادة توجيه المستخدم في البداية إلى نقطة نهاية المزود. بعد نجاح عملية المصادقة على موقع المزود، سيتم إعادة توجيه المستخدم إلى هذا العنوان مع معلمة code. يجب استبدال قيمة code بتفاصيل حساب المستخدم في استدعاء خدمة ويب فوري كما هو موضح أدناه.
قد يحتوي عنوان URL لنقطة نهاية المستهلك على معلمات استعلام خاصة به. سيتم دمج معلمة code فيها دون تجاوز القيم الأخرى.
من الممكن، اعتمادًا على كيفية كتابة قوالب موقع المزود، أن يصل المستخدم إلى نقطة نهاية المستهلك دون وجود قيمة لـ code. في هذه الحالة، يجب التعامل مع المستخدم كما لو كان قد اختار إلغاء عملية المصادقة.
مثال على الاستجابة عند تسجيل الدخول بنجاح (بناءً على المثال السابق):
http://vendor.com/login/?code={code}
حيث {code} هو معرف فريد للاستخدام في خدمة الويب اللاحقة.
استدعاء خدمة الويب اللاحق
عند وصول المستخدم إلى نقطة نهاية المستهلك مع وجود رمز code صالح، يجب على موقع المستهلك إصدار استدعاء فوري لخدمة الويب إلى موقع المزود لتبادل هذا الرمز بمعلومات حساب المستخدم.
سيصل موقع المستهلك إلى إجراء get في وحدة المستخدم، مع تمرير معلمة code التي تم تزويدها به من قبل المزود:
https://www.example.com/tncms/webservice/v1/user/get/?code={code}
ستكون الاستجابة كائن بيانات لحساب المستخدم كما هو موضح في وثائق خدمات الويب. في حالة وجود رمز غير صالح، سيتم إرجاع استجابة فارغة (null).
يمكن استخدام الرمز لمرة واحدة فقط. بعد استخدامه لاسترجاع حساب مستخدم، يتم إبطاله فورًا، وستعود الطلبات المستقبلية به باستجابات فارغة.
يبدو هذا واعدًا: https://help.bloxcms.com/knowledge-base/applications/settings/users/authentication_provider/article_fa0ce6ec-9824-11e4-b296-23bd78ef308a.html:
تتيح لك خيار مزود المصادقة أن يعمل موقعك كمزود مصادقة OpenID. وهذا يعني أن مستخدمين موقعك قد يستخدمون بيانات اعتمادهم من موقعك لتسجيل الدخول إلى مواقع أخرى تسمح بذلك. وقد تعمل مواقع BLOX CMS الأخرى كعملاء، مما يسمح بهذه المبادلة لبيانات اعتماد تسجيل الدخول.
يجوز أن يكون من الممكن تكوين موقع BLOX CMS ليعمل كمزود مصادقة OpenID لـ Discourse. إذا كان الأمر كذلك، فسيتمكن المستخدمون من تسجيل الدخول إلى منتدى Discourse الخاص بك عبر موقع TownNews الخاص بك. لإعداد ذلك، ستحتاج إلى تثبيت Discourse OpenID Connect (OIDC) على موقع Discourse الخاص بك. قد يتطلب تكوينه بعض التجربة والخطأ. أخبرنا إذا واجهت أي صعوبة وسنحاول مساعدتك.