ما هي الطريقة المفضلة لمصادقة المستخدمين على صفحة الويب بطريقة مريحة؟

StackOverflow https://stackoverflow.com/questions/2010699

سؤال

أقوم بتطوير إطار عمل تجريبي جديد، وقررت إعطاء بعض الاهتمام. لقد قرأت على الأساسيات، وتشعر وكأنني فهم جيد جدا للراحة كمفهوم.

لدي نظام لأعلى وتشغيله، باستخدام عناوين URL بدقة لتحديد "الأسماء" في النظام وأخذ "الأفعال" من أساليب طلب HTTP. أنا أستخدم مكالمات JavaScript AJAX لتوفير الوصول إلى حذف ووضع أساليب HTML التي لا يمكن أن توفرها نماذج HTML. (أدرك أن هذه التدابير ليست مطلوبة بدقة لتكون مريحة، لكنها تفي بمتطلبات "واجهة موحدة").

المشكلة تأتي مع عديمي الجنسية والتدذير التخزين التخفيض مع المصادقة. ينطوي النموذج القياسي لمصادقة المستخدم على مواقع الويب عن حدث مصادقة "تسجيل الدخول"، وبعد ذلك (إذا نجح) المستخدم هو "داخل الجدار" مع جلسة آمنة مستمرة وقد ترى وأعلم الأشياء على الطلبات اللاحقة التي قد لا يفعلها المستخدمون غير المصادقون. يبدو أن هذا الثبات للمصادقة يكسر مريح. يبدو أن التخزين المؤقت والانعدامات الجنسية مكسورة، لأن المستخدم المصادق عليه سيشهد HTML الذي يختلف عن أي مستخدم غير مصادقة يراه بنفس الطلب (على سبيل المثال، قد يكون هناك نموذج تسجيل دخول في شريط جانبي خارج المستخدم).

باستخدام استراتيجيات المصادقة على شبكة الاتصالات العالمية لمصادقة المستخدم فقط على الطلبات التي تتطلب مصادقة تبدو خطوة في الاتجاه الصحيح، لأنها لا تنطوي على مفهوم جلسة آمنة مستمرة. ومع ذلك، لا تزال هناك سؤال حول كيفية تصوير مظهر "تسجيل الدخول" للمستخدم النهائي بما يتوقع أن نتوقعنا جميعا من مواقع الويب.

لذلك في التفكير الحالي، ما هي الطريقة المفضلة للتعامل مع المصادقة وإذن من صفحة ويب في طريقة مريحة بدقة، مع الاستفادة من الزخارف المسجلة في أتش تي أم أل؟

هل كانت مفيدة؟

المحلول

يبدو أن هذا الثبات من المصادقة يكسر مريح

بدلا من مصادقة المستخدم، قد تفكر في إنشاء جلسة. سيتم إرجاع "معرف جلسة" جديد، إلى جانب رمز حالة HTTP المناسب (200: موافق، 403: ممنوع، إلخ).

من المحتمل أن يرى المستخدم HTML وهو مختلفا عن ما يراه المستخدم غير المصادق عليه بنفس الطلب

سوف تسأل خادم الراحة الخاص بك: "هل يمكنك الحصول على لي HTML (أو أي مورد) لمعرف الجلسة هذه؟". ستكون HTML مختلفة بناء على "معرف الجلسة".

مع هذه الطريقة، لا يوجد جدار ل "جلسات آمنة مستمرة". أنت ببساطة تتصرف في جلسة.

سيمثل الاسم (أو المورد) الجلسة الفعلية، إذا اخترت هذه الطريقة.

نصائح أخرى

"النموذج القياسي لمصادقة المستخدم على مواقع الويب ينطوي على حدث مصادقة" تسجيل الدخول "، وبعد ذلك (إذا نجح) المستخدم هو" داخل الحائط "مع جلسة آمنة مستمرة"

  1. هذا ليس صحيحا حقا. صحيح جزئيا، ولكن فقط من أجل مواقع الويب التي اخترع مصادقةها الخاصة.

  2. إذا كنت تستخدم "Figest Authentication" يجب على المتصفح إرسال بيانات الاعتماد مع كل طلب.

مصادقة Digest - بيانات الاعتماد مع كل طلب - مريح تماما.

إفعل ذلك.

لجعل الأمور أكثر تبسيطا قليلا، يمكنك حساب مصادقة Digest Nonce على أساس الوقت بحيث تكون جيدة لبعض الوقت (6 دقائق، 0.1 ساعة جيدة). كل شخص بضع دقائق سترسل طلب 401 ويحتاج إلى إعادة ترجمة الهضم.

أحد الخيارات للحفاظ على القدرة على القدرات في الوسطاء للحصول على صفحات مع العناصر الخاصة بالمستخدم هي إضافة العلامة الخاصة بالمستخدم عبر AJAX. تخدم كل استخدام نفس الصفحة، بما في ذلك بعض JavaScript التي ستقوم بطلب XHR بمورد يعيد شيئا مختلفا بناء على تسجيل دخول المستخدم. ثم دمج هذا في الصفحة على جانب العميل. سيتم بعد ذلك تخزين الجزء الرئيسي من الصفحة مؤقتا كما هو نفسه لكل مستخدم.

خيار آخر هو استخدام ESI (الجانب الحافة يشمل). مع هذه، يمكن لذاكرة التخزين المؤقت نفسها دمج تمثيلات مختلفة لبناء النتيجة النهائية.

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

أعرف ما تعنيه حول استمرار المصادقة ضد الرئاسة، لكن ملفات تعريف الارتباط (التي تعطي الوهم من الثبات) هي ببساطة جزء من كل طلب.

"يبدو أن هذا الثبات من المصادقة يكسر مريح. يبدو أن التخزين المؤقت والعدالة الجنسية قد تم كسره، لأن المستخدم المصادق قد يرى HTML الذي يختلف عن أنه سترى المستخدم غير المصادق بنفس الطلب"

لا بأس إذا كان تمثيل المورد مختلف قليلا بناء على معلومات المصادقة. تعد معلومات المصادقة جزءا من الرسالة وبالتالي لا تزال الرسالة "وصحة ذاتية". من الناحية النظرية، لا تزال تصل إلى نفس المورد، وسمح ارتباطات تحرير وحذف التحولات، وليس قطع بيانات إضافية. التحكم في التحولات المتاحة بناء على من يصل إلى المورد يبدو صالحا بالنسبة لي.

رد: إجابة دانيال:

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

لن يكون من الأفضل إنشاء المستخدم ككائن، ومصادقة باستخدام مصادقة Digest، (أو ملف تعريف الارتباط إذا كان يجب). بهذه الطريقة، يحصل كل مستخدم على ذاكرة التخزين المؤقت المستمرة الخاصة به بدلا من ذاكرة التخزين المؤقت التي تستمر في اليوم وتختفي.

هذا أيضا يجعلني أكثر منطقية منطقية بالنسبة لي، لأنك تجعل صفحة تبدو مختلفة اعتمادا على المستخدم، (إضافة "مرحبا [الاسم]، وهناك الفرق بين "تسجيل الدخول" و "تسجيل الخروج" يعتمد على ما إذا كان المستخدم مدرج في عنوان URL. ما إذا كان يتم منح شخص معين الوصول إلى عنوان URL الخاص بالمستخدم يعتمد على ما إذا كان بإمكانهم مصادقة مثل هذا المستخدم.

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

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top