أواجه إخفاقات OIDC في سجلات Discourse: `CSRFTokenVerifier::InvalidCSRFToken` على `/auth/oidc` (POST)

مرحباً بالجميع،

أنا أستخدم Discourse 2026.2.0-latest (26f3e2aa87) (تثبيت Docker، قالب nginx الافتراضي، لا يوجد Cloudflare). لدي تمكين OpenID Connect (Microsoft Entra / Azure AD).

عندما يحاول المستخدم التسجيل / تسجيل الدخول عبر OIDC، يسجل Discourse خطأ:

(oidc) فشل المصادقة! CSRFTokenVerifier::InvalidCSRFToken

في سجل الإدخال، يمكنني رؤية الطلب هو:

  • REQUEST_URI: /auth/oidc
  • REQUEST_METHOD: POST
  • المُحيل (Referrer): /signup

يتم تعيين same_site_cookies حاليًا على Lax.

نظريتي العاملة هي أن مزود الهوية (IdP) يعود باستخدام response_mode=form_post (نشر عبر المواقع)، لذا مع SameSite=Lax قد لا يتم تضمين ملف تعريف الارتباط للجلسة عند الاستدعاء، مما يتسبب في فشل التحقق من CSRF الخاص بـ Discourse.

أسئلة:

  1. هل يعد تعيين same_site_cookies = None هو الإصلاح الموصى به / المدعوم لمزودي OIDC الذين يستخدمون استدعاءات form_post؟
  2. إذا لم يكن كذلك، فهل هناك طريقة موصى بها لتكوين Discourse OIDC (أو IdP) بحيث يكون الاستدعاء عبارة عن طلب GET (استعلام) بدلاً من form_post، لتجنب الحاجة إلى SameSite=None؟
  3. هل هناك أي محاذير أمنية/توافقية خاصة بـ SameSite=None لتسجيلات الدخول/التسجيلات في Discourse OIDC؟

شكراً!