[Http] RESTful Login Failure: Return 401 or Custom Response


Answers

Question

هذا سؤال مفاهيمي.

لدي تطبيق عميل (محمول) يحتاج إلى دعم إجراء تسجيل دخول ضد خدمة ويب RESTful. نظرًا لأن خدمة الويب هي RESTful ، فهذا يرقى إلى قبول العميل لاسم المستخدم / كلمة المرور من المستخدم ، والتحقق من اسم المستخدم / كلمة المرور هذه مع الخدمة ، ثم تذكر فقط إرسال اسم المستخدم / كلمة المرور هذه مع جميع الطلبات اللاحقة.

يتم توفير جميع الاستجابات الأخرى في خدمة الويب هذه بتنسيق JSON.

السؤال هو ، عندما أستعلم عن خدمة الويب لمجرد معرفة ما إذا كان اسم المستخدم / كلمة المرور معينين صالحين ، يجب أن تستجيب خدمة الويب دائمًا ببيانات JSON التي تخبرني بأنها ناجحة أو غير ناجحة ، أو يجب أن تعرض HTTP 200 على بيانات اعتماد جيدة و HTTP 401 على أوراق اعتماد سيئة.

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

بعبارة أخرى ، يبدو لي أن طلبًا مثل:

myservice.com/this/is/a/user/action 

يجب إرجاع 401 إذا تم توفير بيانات الاعتماد السيئة. لكن طلب مثل:

myservice.com/are/these/credentials/valid

يجب عدم إرجاع 401 لأن عنوان URL المعين (الطلب) مصرح به مع أو بدون بيانات اعتماد صالحة.

أود سماع بعض الآراء المبررة بطريقة أو بأخرى في هذا الشأن. ما هي الطريقة القياسية للتعامل مع هذا ، وهل الطريقة القياسية للتعامل مع هذا مناسب منطقيا؟






Links