سؤال

وأنا أكتب تطبيق صغير الذي يعرض على بعد REST API العش بسيط HTTP. أنا عالقة تحاول أن تقرر كيفية مؤشرا على فشل بسبب عدم وجود ترخيص.

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

ومشكلتي هي أن رمز الحالة HTTP واضح لرفض طلبات غير مصرح بها، "401"، يتم تحديد من حيث رأس "WWW مصادقة". انظر RFC2616 ثانية 10.4.2 .

<اقتباس فقرة>   

والرد يجب أن تشمل   WWW مصادقة حقل رأس (القسم   14.47) يحتوي على التحدي الذي ينطبق على المورد المطلوب.

وأنا لا أستطيع أن أصدق هذا هو مشكلة شائعة. هو شائع ببساطة الزائد 401 لتشمل استخدامات أكثر عمومية؟ ماذا عن متصفحات ظهرت المصادقة / الحوارات الإلكترونية (التي بالمناسبة أنا لم أر في بلدي التجارب، لذلك ربما لا يحدث بالنسبة للوظائف)؟

وخلاصة القول: هل هو موافق لاستخدام 401 في هذا السياق، أم أن هناك حلا أفضل

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

المحلول

وعادة، كنت ترسل 401 إذا كان العميل يمكن المصادقة ويحل المشكلة، ولكن كونك لا توفر وسيلة لمصادقة في API، كنت تشير الى عودة خطأ 403 (ممنوع) بدلا من ذلك. وهذا لا يتطلب رأس وسيشير إلى العميل أنه غير قادر على الوصول إلى الخدمة.

نصائح أخرى

عودة شيء من هذا القبيل:

HTTP/1.1 401 Unauthorized
Location: https://example.com/auth-app/login
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top