تأكيد تركيبة صحيحة للمستخدم وكلمة المرور عبر API؟

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

أحتاج إلى بعض التوجيه بخصوص تسجيل دخول المستخدمين إلى موقع ويب بعيد باستخدام اسم المستخدم وكلمة المرور الحاليين في Discourse.

لا أعتقد أنني بحاجة إلى SSO… وإليك السبب.

أولاً، بعض الخلفية حول حالة الاستخدام الحالية ولماذا لا يعجبني.

لدي حالياً موقع ويب على https://www.example.com ويحتوي على زر تسجيل دخول.

عندما يضغط المستخدم على زر تسجيل الدخول، يُطلب منه إدخال اسم المستخدم وعنوان البريد الإلكتروني الحاليين في Discourse (ملاحظة: اسم المستخدم + البريد الإلكتروني، ليس كلمة المرور).

ثم أستخدم هاتين المعلومتين لإرسال طلب API من نوع GET إلى:

"https://mydiscourse.comm/admin/users/list/all.json?email=" + strEmail

في رؤوس هذا الطلب الذي أقوم به، أدرج اسم حساب المستخدم “النظام” ومفتاح API المرتبط بهذا المستخدم.

إذا تم العثور على تطابق في عنوان البريد الإلكتروني، أقارن اسم المستخدم الذي قدمه المستخدم في النموذج مع اسم المستخدم الذي تم إرجاعه في استجابة API لتلك البريد الإلكتروني المحدد.

إذا تطابقا، أعتبر أن هذا المستخدم قد تم تسجيل دخوله على موقعي على https://www.example.com.

لقد بنيت هذا قبل ثلاث أو أربع سنوات ولا يزال يعمل بشكل جيد حتى اليوم.

لكن…

  1. من مربك جداً للمستخدم إدخال مزيج من اسم المستخدم + البريد الإلكتروني في نموذج تسجيل الدخول
    – معظم الناس دائماً يدخلون اسم المستخدم + كلمة المرور
    – رغم التعليمات الضخمة في كل مكان في نموذجي، لا يزال الناس يخطئون بشكل طبيعي

  2. إنه غير آمن
    – كل ما تحتاجه هو معرفة اسم المستخدم + عنوان بريدهم الإلكتروني، ومع هاتين المعلومتين (السهلتين) يمكنك تسجيل الدخول إلى https://www.example.com “بصفتهم” دون أي جهد تقريباً

ما أود فعله هو أن يضغط المستخدم على زر تسجيل الدخول على https://www.example.com ويدخل اسم المستخدم + كلمة المرور الحاليين في Discourse (بدلاً من اسم المستخدم + البريد الإلكتروني !)

ثم يقوم موقعي على example.com بإرسال طلب API سريع إلى Discourse الخاص بي، للتأكد من صحة مزيج اسم المستخدم/كلمة المرور وإرجاع معرف المستخدم الحالي في Discourse.

أتمنى أن يكون هذا واضحاً :grimacing:

لقد راجعت جميع وثائق API، ولا أستطيع على الإطلاق العثور على نقطة نهاية “تسجيل دخول” بسيطة؟ :thinking:

لا أحتاج ولا أريد تسجيل دخول أو خروج الأشخاص من Discourse نفسه، أنا فقط أحتاج إلى التأكد من صحة اسم المستخدم/كلمة المرور فعلياً.

أي تلميحات، توجيهات، روابط أو نصائح مرحب بها جداً :blush:

لا توجد مسار في واجهة برمجة التطبيقات (API) يعيد كلمة مرور المستخدم الخام، لذا لا أعتقد أن هذا النهج سيعمل. من خلال وصفك، يبدو أنك تريد استخدام Discourse كمزود لتسجيل الدخول الموحد (SSO) لموقعك الإلكتروني. يمكن جعل ذلك يعمل. التفاصيل حول كيفية إعداد ذلك متوفرة هنا: Use Discourse as an identity provider (SSO, DiscourseConnect).

شكرًا لك @simon - لمحة سريعة عن الرابط توحي بأنه قد يكون بالضبط ما أحتاجه.

سأبدأ في القراءة :nerd_face: