32

मैं वेब एप्लिकेशन को डेटा प्रदान करने के लिए एक शानदार सेवा बना रहा हूं। मेरे पास इसके बारे में दो संबंधित प्रश्न हैं।रीस्टफुल HTTP एपीआई में प्रमाणीकरण, 401 डब्ल्यूडब्ल्यूडब्ल्यू-प्रमाणीकरण

1. अनधिकृत अनुरोधों से कैसे निपटें?

मैं निम्नलिखित कोड के साथ अनुरोध का जवाब के लिए इच्छुक हूँ:

  • संसाधन खुला और पाया है? 200 ठीक
  • क्या आपको संसाधनों तक पहुंचने के लिए प्रमाणित होने की आवश्यकता है? 401 अनधिकृत
  • क्या आपके पास संसाधनों की एक श्रेणी तक पहुंच नहीं है? 403 निषिद्ध
  • क्या आपके पास संसाधनों की एक श्रेणी तक पहुंच है, लेकिन इस विशिष्ट संसाधन के लिए नहीं? 404 नहीं मिला लोगों को उन संसाधनों के अस्तित्व को जानने से रोकने के लिए जिनके पास पहुंच नहीं है।
  • संसाधन मौजूद नहीं है? 404 नहीं

इस एक RESTful सेवा व्यवहार करने के लिए एक सिफारिश की रास्ता है मिल गया?

2. WWW-Authenticate शीर्षलेख 401 प्रतिक्रियाओं को आपूर्ति करना चाहिए?

मैं Wikipedia पर पढ़ा (शायद नहीं सबसे सटीक संसाधन है, लेकिन यह मेरे लिए काम करता है) है कि एक 401 प्रतिक्रिया चाहिए, एक WWW-Authenticate शीर्ष लेख शामिल तथापि आगे खोज पर मैं वास्तव में किसी भी संसाधन है कि क्या यह कहा नहीं मिल सकता है मूल्य का मतलब है और यह क्या होना चाहिए।

मुझे इस शीर्षलेख के बारे में कई SO प्रश्न और मंच विषय मिले और वे सभी ओएथ के बारे में प्रतीत होते हैं, 401 स्टेटस कोड का उपयोग करने के खिलाफ सुझाव देते हैं या कहते हैं कि आप कुछ कर सकते हैं।

इस हेडर में सही मूल्य क्या होना चाहिए?

उत्तर

19

आपके सवालों के जवाब के लिए:

अनधिकृत अनुरोध के साथ कैसे निपटने के लिए?

जिस तरीके से आपने इसका वर्णन किया है वह एक विश्वसनीय सेवा के लिए अनुशंसित तरीका है। जहां तक ​​मैं देख सकता हूं कि इसमें बिल्कुल कुछ भी गलत नहीं है।

क्या डब्ल्यूडब्ल्यूडब्ल्यू-प्रमाणीकरण शीर्षलेख 401 प्रतिक्रियाओं की आपूर्ति करनी चाहिए?

सामान्य रूप से WWW-Authenticate शीर्षलेख क्लाइंट को बताता है कि सर्वर किस प्रकार का प्रमाणीकरण स्वीकार करेगा। यदि ग्राहक एक अनधिकृत अनुरोध करता है, जिसका अर्थ है कि वह लापता या अमान्य Authorization शीर्षलेख के साथ अनुरोध भेज रहा है, तो ग्राहक WWW-Authenticate का उपयोग क्लाइंट को यह बताने के लिए करेगा कि वह किस प्रमाणीकरण योजना को स्वीकार करेगा (यानी बेसिक, डाइजेस्ट या ओथ) और किस क्षेत्र के लिए ।

कल्पना करें कि यह किसी प्रकार के पहचान प्रश्न या सर्वर के हिस्से पर चुनौती की तरह है, यानी "आप कौन हैं?" या "साबित करें कि आप निम्नलिखित तरीके से प्रमाण पत्र प्रदान करके कौन हैं!"।

उदाहरण के लिए: WWW-Authenticate: Basic realm="My App"

यहाँ सर्वर क्लाइंट है कि वह एक प्रमाणीकरण योजना बेसिक नामित उपयोग करता बताता है। दायरे कुछ स्ट्रिंग से अधिक कुछ नहीं है जो सर्वर पर संरक्षित स्थान की पहचान करता है।

+0

तो इस परिदृश्य में कि मेरे पास वेब एप्लिकेशन के लिए डेटा प्रदान करने वाली एक वेब सेवा है, हेडर कैसा दिखता है? 'फॉर्म्स realm =" http://my.domain.com/ "' के संदर्भ में कुछ? – Aidiakapi

+1

हां यह ऐसा दिखाई दे सकता है। दायरे को डोमेन नाम होने की आवश्यकता नहीं है। यह कोई स्ट्रिंग हो सकती है। मूल्य केवल संसाधनों का एक समूह पहचानता है जो प्रमाण-पत्र साझा करते हैं। इस तरह आप सर्वर पर संरक्षित संसाधनों को कई सुरक्षा रिक्त स्थानों में समूहित कर सकते हैं, प्रत्येक अपनी प्रमाणीकरण योजना और/या प्राधिकरण डेटाबेस के साथ। – benjiman

0

मेरे शोध (googling) के आधार पर मैंने भेजने का फैसला किया: Newauth realm = "लॉगिन टोकन का उपयोग करें"।

वेबसाइट http://greenbytes.de/tech/tc/httpauth/#unknown में विभिन्न लेख विधियों के लिए परीक्षण के मामले हैं और मुझे कुछ भी नहीं मिला है जो 'ऑथ टोकन प्राप्त करें' और इसलिए मुझे लगता है कि यह 'न्यूथ' है।

मेरे लिए भी महत्वपूर्ण: यह क्लाइंट साइड पर लॉगिन प्रॉम्प्ट नहीं बनाता है।

+1

नई योजनाएं पंजीकृत होने वाली हैं। –

+0

@ जुलिएन रेस्के क्या आपके पास कोई जानकारी है कि ऐसा कैसे करें? या जहां आपको वह जानकारी मिली (संभवतः कुछ आरएफसी पेज?)? आप इसे एक आरईएसटी एपीआई पर कैसे करेंगे? – sigi

+0

यह सब आरएफसी 7235 में वर्णित है। –

संबंधित मुद्दे