مشكلة SSO: المعلمات SSO أو SIG مفقودة

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

على Discourse، تأكد من تكوين الإعدادات التالية:

يجب تعيين إعداد discourse connect url إلى عنوان URL الذي يتعامل مع الرمز الذي نشرته.

قم بتعيين إعداد discourse connect secret إلى سلسلة نصية لا تقل عن 10 أحرف. لاحظ أن لديك السلسلة المكونة من 7 أحرف keyhere مُضمنة في الرمز الذي نشرته. أفترض أنك تقوم بتغيير هذه القيمة عند تشغيل الرمز. قم بتعيينها إلى نفس القيمة التي أدخلتها على Discourse.

الآن قم بتسجيل الخروج من موقع Discourse الخاص بك. افتح علامة تبويب الشبكة في فاحص الويب الخاص بمتصفحك. انقر فوق الزر “تسجيل الدخول” على Discourse. يجب أن ترى طلبات مشابهة لأول طلبين في لقطة الشاشة أدناه:

سيكون الطلب الأول إلى http://forum.example.com/session/sso?return_path=%2F

يجب أن يكون الطلب التالي إلى https://example.com/?sso=<sso_payload_sent_from_discourse>&sig=<sso_signature>

يجب تعيين example.com و forum.example.com إلى النطاقات الفعلية التي تستخدمها.

إذا تم تكوين كل شيء بشكل صحيح، أتوقع أن يقوم هذا بتعيين قيم المعاملين sso و sig إلى المتغيرات التي قمت بتعيينها هنا:

$sso = $_GET['sso'];
$sig = $_GET['sig'];

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

مع تمكين DiscourseConnect، يمكنك تسجيل الدخول مرة أخرى إلى موقع Discourse الخاص بك عن طريق زيارة المسار /u/admin-login. إذا كان لديك وصول إلى وحدة تحكم Rails الخاصة بموقع Discourse، يمكنك أيضًا تسجيل الدخول عن طريق تعطيل DiscourseConnect من وحدة تحكم Rails:

SiteSetting.enable_discourse_connect = false

من الممكن وجود أخطاء أخرى في الرمز الذي نشرته. على سبيل المثال، أعتقد أنك بحاجة إلى استدعاء urldecode على قيمة المعامل sso قبل إنشاء التوقيع المتوقع. ألق نظرة على كيفية تعامل إضافة WP Discourse مع الأمر:

$payload في الدالة أعلاه هو ببساطة قيمة معلم الاستعلام sso، بعد تنقيته هنا: wp-discourse/lib/sso-provider/discourse-sso.php at main · discourse/wp-discourse · GitHub.

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