يقوم المستخدمون بالتسجيل في \u003chttps://getdbt.com/community/join-the-community\u003e
يتلقون بريدًا إلكترونيًا للتأكيد من Auth0
يصلون إلى \u003chttps://getdbt.com/community/email-verified\u003e
ينقرون على الحصول على المساعدة في منتدى المجتمع، ويتم توجيههم إلى Auth0 لتسجيل الدخول
بعد تسجيل الدخول، يتم إعادة توجيههم إلى discourse.getdbt.com ولكن مع عرض تحذير CSRF.
إذا نقروا على تسجيل الدخول ثم استخدام حساب مجتمع dbt الخاص بك، فسيتم إنشاء الحساب بنجاح وسيظهر لهم مربع حوار إنشاء الحساب حيث يمكنهم تعيين اسم المستخدم الخاص بهم وما إلى ذلك.
فيديو Loom يوضح هذا الإجراء:
لقد قمت بتمكين oauth2 debug auth وفي السجلات يمكنني رؤية (oauth2_basic) Authentication failure! csrf_detected: OmniAuth::Strategies::OAuth2::CallbackError, csrf_detected | CSRF detected
أسئلتي:
هل هذه مشكلة في Discourse أم مشكلة في Auth0؟ أفترض أنها مشكلة في Discourse نظرًا لأن تدفق تسجيل دخول مماثل تقريبًا لـ Slack يعمل دون مشكلة.
لماذا يعمل هذا على صفحة تسجيل الدخول ولكنه لا يعمل عند تشغيل تسجيل الدخول من جانب Auth0؟
تشير رسالة خطأ CSRF الافتراضية إلى أنها تحدث عندما يتغير المتصفح، أو عندما تستغرق عملية تسجيل الدخول وقتًا طويلاً. لا ينطبق أي من هذين الأمرين، فما الذي يمكن أن يسببه أيضًا؟
هل يجب أن أضع https://discourse.getdbt.com/auth/oauth2_basic في حقل URI لتسجيل الدخول للتطبيق وأترك https://discourse.getdbt.com/auth/oauth2_basic/callback في حقل عناوين URL المسموح بها لإعادة التوجيه؟
هل يمكنك مشاركة المزيد من التفاصيل حول كيفية تنفيذ رابط “الحصول على المساعدة في منتدى المجتمع”؟ إلى أين يذهب الرابط؟ أفترض حاليًا أن الزر تتم معالجته بواسطة Auth0، وأن إضافة تكوين عنوان URL الجديد هذا سيؤدي إلى ربط الزر بشكل صحيح بـ /auth/oauth2_basic لبدء تدفق تسجيل الدخول.
عذرًا على الرد البطيء - عدت للتو بعد عطلة عيد الميلاد!
لقد فعلت هذا:
ولكن لا يزال نفس النتيجة تظهر.
يشير هذا الرابط إلى https://dev-zb38hsho.us.auth0.com/samlp/5GpVvVgryMnBaNJFuLt5DW3bs89jO0hr، حيث dev-zb38hsho هو معرف مثيل Auth0 الخاص بنا و 5GpVvVgryMnBaNJFuLt5DW3bs89jO0hr هو معرف العميل لتطبيق Discourse في Auth0.
زيارة هذا الرابط تعيد التوجيه إلى https://dev-zb38hsho.us.auth0.com/u/login?state=SESSION_SPECIFIC_TOKEN.
المفتاح هو أن Discourse يحتاج إلى بدء تدفق المصادقة على /auth/oauth2_basic، ثم إعادة التوجيه إلى Auth0، ثم العودة إلى /auth/oauth2_basic/callback.
كنت آمل أن نتمكن من جعل Auth0 يبدأ تسجيل الدخول بالبدء بعنوان URL الأول، ولكن يبدو أنه يقفز Discourse مباشرة إلى عنوان URL الخاص بالرد.
هل يمكنك تحديث الزر ليشير إلى /auth/oauth2_basic في المنتدى؟ سيبدأ هذا تدفق المصادقة ويعيد التوجيه فورًا إلى Auth0، لذا يجب أن يكون تجربة المستخدم الإجمالية كما هي.
تظهر هذه الصفحة عندما تكون هناك طرق تسجيل دخول متعددة على موقع ما. إذا قمت بتعطيل “تسجيل الدخول المحلي” (اسم المستخدم/كلمة المرور) فسيتم الانتقال مباشرة إلى عملية تسجيل الدخول.