مرحباً بالجميع،
أنا أستخدم Discourse 2026.2.0-latest (26f3e2aa87) (تثبيت Docker، قالب nginx الافتراضي، لا يوجد Cloudflare). لدي تمكين OpenID Connect (Microsoft Entra / Azure AD).
عندما يحاول المستخدم التسجيل / تسجيل الدخول عبر OIDC، يسجل Discourse خطأ:
(oidc) فشل المصادقة! CSRFTokenVerifier::InvalidCSRFToken
في سجل الإدخال، يمكنني رؤية الطلب هو:
REQUEST_URI: /auth/oidcREQUEST_METHOD: POST- المُحيل (Referrer):
/signup
يتم تعيين same_site_cookies حاليًا على Lax.
نظريتي العاملة هي أن مزود الهوية (IdP) يعود باستخدام response_mode=form_post (نشر عبر المواقع)، لذا مع SameSite=Lax قد لا يتم تضمين ملف تعريف الارتباط للجلسة عند الاستدعاء، مما يتسبب في فشل التحقق من CSRF الخاص بـ Discourse.
أسئلة:
- هل يعد تعيين
same_site_cookies = Noneهو الإصلاح الموصى به / المدعوم لمزودي OIDC الذين يستخدمون استدعاءاتform_post؟ - إذا لم يكن كذلك، فهل هناك طريقة موصى بها لتكوين Discourse OIDC (أو IdP) بحيث يكون الاستدعاء عبارة عن طلب GET (استعلام) بدلاً من
form_post، لتجنب الحاجة إلىSameSite=None؟ - هل هناك أي محاذير أمنية/توافقية خاصة بـ
SameSite=Noneلتسجيلات الدخول/التسجيلات في Discourse OIDC؟
شكراً!