Discourse-saml غير متوافق مع المواقع المتعددة

في مثيل Discourse مُعد حديثًا، يفشل SAML بسبب سياسة أمان المحتوى الافتراضية التي تمنع السكربت الذي يُقدّم النموذج…

نحن نستضيف العديد من العملاء الذين يستخدمون إضافة SAML بنجاح مع CSP. هل يمكنك مشاركة الخطأ الذي تظهره في وحدة تحكم المتصفح؟

جميع خدمات الاستضافة لدينا تستخدم شبكات توصيل المحتوى (CDNs)، لذا فإن تخميني هو أن قاعدة CSP لا تعمل للأشخاص الذين لا يستخدمون شبكات توصيل المحتوى (CDNs) :thinking:

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

نعم، آسف. كنت أخطط للقيام بذلك، لكنني لا أستطيع تكرار رسالة الخطأ — رغم أن الخطأ لا يزال قائمًا.
الآن أواجه أخطاء “محتوى مختلط” فقط في أيقونة الموقع (favicon) وأيقونة آبل. تم رفع الصور قبل تفعيل خيار force_https، لكنني أعتقد أن هذا الإعداد يجب أن يتولى معالجة مصدر جميع الأيقونات… هل هذا عيب؟

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

نعم، عذراً، كنت أخطط للقيام بذلك لكنني لا أستطيع إعادة إنتاج رسالة الخطأ — رغم أن الخطأ لا يزال قائماً.

حسناً، لقد وجدت الخطأ. أعتقد أنه ناتج عن الإعداد:

  1. إنها مثيلة متعددة المواقع، حيث يُعد ps.zoethical.org الموقع ‘الرئيسي’، والذي تم تكوين SAML له في الأصل.
  2. تظهر زر SAML في مثيلة forum.zoonklopper.be، لكن النطاق مُعرّف لـ ps.zoethical.org.
(saml) فشل المصادقة! invalid_ticket: OneLogin::RubySaml::ValidationError، https://ps.zoethical.org ليس جمهورًا صالحًا لهذا الرد - الجماهير الصالحة: https://forum.zonnklopper.be

إذا أضفت جمهور ps.zoethical.org، سأحصل على خطأ آخر:

(saml) فشل المصادقة! invalid_ticket: OneLogin::RubySaml::ValidationError، تم استلام الرد في https://forum.zonnklopper.be/auth/saml/callback بدلاً من https://ps.zoethical.org/auth/saml/callback

إضافة SAML غير متوافقة مع المواقع المتعددة.

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

نعم، هذا ما أدركته للتو. إنه أمر مؤسف جدًا. :frowning:

لذا، فإن عدم توافق الإضافة يعني فعليًا ما يلي:

  1. ستعمل على الموقع الأول ضمن شبكة متعددة المواقع (أو الموقع الذي تم تكوينه عبر DISCOURSE_HOSTNAME).
  2. سيظهر الزر على واجهة تسجيل الدخول في جميع المواقع الأخرى.
  3. لكن هذه الأزرار ستفشل دون وجود حل واضح.

بما أنه لا يوجد موضوع مخصص في قناة #plugin لـ discourse-saml، أقترح إنشاء موضوع جديد وذكر هذه المحاذير في المنشور الأول. أنا متأكد تمامًا من أنه يمكن توحيد الجهود من خلال الـ 50+ موضوعًا التي تذكر SAML. لو كنتُ قد عرفتُ هذا من قبل، لكانت إعدادي للخدمات مختلفًا.

(بالمناسبة، من المرجح جدًا أن خطأ CSP الأصلي ناتج عن محاولة الإطار المضمن تحميل الموقع الأصلي بدلاً من الموقع الحالي.)

إخفاء زر SAML في شبكة المواقع المتعددة

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

  1. انتقل إلى Admin > Themes واضغط على “install new”.
  2. أنشئ مكونًا جديدًا (بالاسم: “Hide SAML Button”).
  3. أضف كود CSS التالي:
    #login-buttons .btn.btn-social.saml {
        display: none; /* الإضافة غير متوافقة مع شبكة المواقع المتعددة */
    }
    
  4. طبّق المكون على جميع السمات.

الآن، سيبقى زر SAML (الذي لا يعمل على هذه النسخة) مخفيًا عن الأنظار.

تم إغلاق هذا الموضوع تلقائيًا بعد 3 أيام. لم تعد الردود الجديدة مسموحًا بها.