توقف SSO عن العمل 🤔

مرحباً يا رفاق!

أقوم بمعالجة مصادقة SSO في الخلفية الخاصة بـ PHP. أبدأ بإرسال طلب cURL إلى عنوان URL الخاص بـ SSO (Communauté et formation pour entrepreneurs) للحصول على حمولة SSO و SIG، ثم أنتقل إلى إنشاء حمولتي الخاصة لإنشاء عنوان URL التوجيه الصحيح.

ها هو المكان الذي يصبح فيه الأمر غريباً…

إذا قمت بالوصول إلى Communauté et formation pour entrepreneurs عبر المتصفح، ونسخت/ألصقت حمولة SSO و SIG في السكربت الخاص بي، فستعمل عنوان URL التوجيه النهائي.

لكن إذا حصلت عليها عبر cURL، فسيظهر عنوان URL التوجيه النهائي رسالة خطأ، وسأجد هذا في سجلاتي:

Verbose SSO log: Nonce has already expired

أنا في حيرة من أمري… يبدو أن المشكلة ظهرت فجأة دون سابق إنذار، والآن لا يستطيع مستخدموهم تسجيل الدخول.

هل قام Discourse بتغيير شيء ما لمنع البوتات من الوصول إلى /session/sso؟

نعم، تم الآن ربط الـ nonce بجلسة المستخدم الذي تم إنشاؤه من أجله. يبدو أن المشكلة التي تواجهها مرتبطة بهذا:

بدلاً من إرسال طلب curl، فإن التوقع هو أن يزور المستخدم الذي سيتم مصادقته /session/sso، إما بالنقر فوق زر تسجيل الدخول في الموقع، أو من خلال إعادة التوجيه إليه من تطبيقك. عند القيام بذلك، سيتم إعادة توجيههم مرة أخرى إلى تطبيقك بواسطة Discourse. ستكون الـ nonce الموجودة في تلك الحمولة صالحة.

هذا ما اضطررتُ إلى فعله لحل المشكلة، لكنه يعطل عملية تسجيل الدخول غير المتزامنة الخاصة بي. :pensive_face: لقد كنتُ حقًا أحب القيام بالأشياء بهذه الطريقة.

لقد جربتُ أيضًا القيام بذلك عبر Axios. كنتُ أتوقع أن يعمل ذلك نظرًا لأن الطلب يأتي من العميل، لكنه لا يبدو أنه يعمل أيضًا.

إذا كانت لديك فكرة عن كيفية تنفيذ عملية تسجيل دخول غير متزامنة، فسأرحب بأي نصائح! وعلى أي حال، شكرًا جزيلاً على ردك، فهو مُقدَّر جدًا.