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. لكن هذه الأزرار ستفشل دون وجود حل واضح.

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

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

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

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

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

الآن، لن يظهر زر SAML (الذي لا يعمل على هذه النسخة) في الواجهة.

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