CSRFTokenVerifier::InvalidCSRFToken عند بدء تسجيل الدخول عبر SAML على Discourse 2026.6

CSRFTokenVerifier::InvalidCSRFToken عند بدء تسجيل الدخول عبر SAML في Discourse 2026.6
مرحباً،

أحاول تكوين مصادقة SAML مع ADFS على تثبيت Discourse جديد.

البيئة

  • إصدار Discourse: 2026.6 (Rails 8.0.5)
  • إضافة discourse-saml
  • معرف الإضافة:
7d0fe944bf33588e6813bffaef5eb8f34e37d039
  • تم تمكين HTTPS
  • وكيل عكسي / موازن أحمال أمام Discourse
  • force_https = true

تكوين SAML

نقطة نهاية البيانات الوصفية تعمل بشكل صحيح:

https://<hostname>/auth/saml/metadata

تحتوي البيانات الوصفية على:

  • EntityID
  • ACS URL
  • SLO URL

نجح فريق ADFS في استيراد البيانات الوصفية.

المشكلة

عند النقر على تسجيل الدخول عبر SAML، لا يقوم Discourse بتوجيه المستخدم إلى ADFS.

بدلاً من ذلك، يعيد فوراً:

عذراً، انتهت مهلة التفويض، أو قمت بتغيير المتصفحات.

سجل Rails

Started GET "/session/csrf"
Completed 200 OK

Started POST "/auth/saml"

(saml) Authentication failure!
CSRFTokenVerifier::InvalidCSRFToken

Started GET "/auth/failure?message=csrf_detected&strategy=saml"

الأشياء التي تم التحقق منها بالفعل

  • يعمل HTTPS
  • Discourse.base_url = https://hostname
  • force_https = true
  • كوكي الجلسة (_forum_session) موجودة
  • authenticity_token مدرج في POST /auth/saml
  • إضافة discourse-saml هي أحدث فرع رئيسي
  • نقطة نهاية البيانات الوصفية تعمل
  • تم إعادة إنشاء بيانات ADFS الوصفية من بيانات SP الوصفية

طلب المتصفح

يحتوي POST /auth/saml على:

  • كوكي _forum_session
  • authenticity_token

ومع ذلك، يفشل الطلب فوراً بـ:

CSRFTokenVerifier::InvalidCSRFToken

لا يصل أبداً إلى ADFS.

معلومات إضافية

أدوات مطوري المتصفح تظهر:

x-csrf-token: undefined

هل يمكن أن يكون هذا مشكلة CSRF في Rails 8 / OmniAuth، أم أن هناك تكويناً آخر مطلوباً لـ discourse-saml على إصدارات Discourse الأخيرة؟

أي اقتراحات ستكون موضع تقدير.


Discourse.base_url

https://testvknowyeni.vakifbank.intra

SiteSetting.force_https

true

SiteSetting.same_site_cookies

Lax