कैसे एक एपीआई का उपयोग करना चाहिए http मूल प्रमाणीकरण


17

जब एक एपीआई के लिए यह आवश्यक होता है कि एक ग्राहक इसे प्रमाणित करता है, तो मैंने दो अलग-अलग परिदृश्यों का उपयोग किया है और मैं सोच रहा हूं कि मुझे अपनी स्थिति के लिए किस मामले का उपयोग करना चाहिए।

उदाहरण 1. किसी कंपनी द्वारा HTTP बेसिक का उपयोग करके एक टोकन और गुप्त के साथ प्रमाणित करने की अनुमति देने के लिए एक एपीआई की पेशकश की जाती है।

उदाहरण 2. एक एपीआई एक अंतिम उपयोगकर्ता को प्रमाणित करने के लिए HTTP बेसिक के माध्यम से एक उपयोगकर्ता नाम और पासवर्ड स्वीकार करता है। आम तौर पर उन्हें भविष्य के अनुरोधों के लिए एक टोकन वापस मिलता है।

मेरा सेटअप: मेरे पास एक JSON API होगा जिसे मैं एक मोबाइल और वेब ऐप के लिए अपने बैकएंड के रूप में उपयोग करता हूं। यह मोबाइल और वेब ऐप के लिए टोकन और सीक्रेट के साथ भेजने के लिए अच्छा अभ्यास लगता है, इसलिए केवल ये दोनों ऐप किसी अन्य तीसरे पक्ष को अवरुद्ध करने वाले एपीआई तक पहुंच सकते हैं।

लेकिन मोबाइल और वेब ऐप उपयोगकर्ताओं को लॉगिन करने और पोस्ट सबमिट करने, उनका डेटा देखने आदि की अनुमति देते हैं, इसलिए मैं उन्हें प्रत्येक अनुरोध पर HTTP बेसिक के माध्यम से लॉगिन करना चाहूंगा।

क्या मैं किसी तरह इन दोनों तरीकों के संयोजन का उपयोग करता हूं या केवल प्रत्येक अनुरोध पर अंतिम उपयोगकर्ता क्रेडेंशियल्स (उपयोगकर्ता नाम और टोकन) भेजता हूं? अगर मैं केवल अंतिम उपयोगकर्ता क्रेडेंशियल्स भेजता हूं, तो क्या मैं उन्हें क्लाइंट पर कुकी में संग्रहीत करता हूं?


ध्यान दें कि कुकीज़ HTTP प्रोटोकॉल का हिस्सा नहीं हैं, और केवल एक सामान्य ब्राउज़र सुविधा है। इसलिए यदि आप वेब के लिए तैनाती नहीं कर रहे हैं, तो उनके बारे में भूल जाएं।
यम मार्कोविच

यदि कुकीज़ की सिफारिश नहीं की जाती है, तो आप एपीआई को पास करने के लिए क्रेडिट कैसे / कहाँ जमा करते हैं?
पॉल साइलिंग

कुकीज़ ब्राउज़र उपयोगकर्ताओं के लिए सत्र टोकन को मूल रूप से संग्रहीत करने का एक तरीका है। यदि आप एक डेवलपर के साथ बातचीत कर रहे हैं, तो यह निर्बाध होने की आवश्यकता नहीं है। आप एक सार्वजनिक कनेक्शन सेवा सेट कर सकते हैं जो "टिकट" देती है, और डेवलपर्स अपने टिकट को इन-मेमोरी या जहां भी चाहें, रख सकते हैं। ध्यान दें कि मेरे पास कोई व्यावहारिक वेब सेवा का अनुभव नहीं है और इस तरह के सामान के लिए मानक समाधान हैं।
यम मारकोविच

एंड यूज़र ऑर्ट और एपीआई ऑर्ट के बारे में मेरे सवाल के बारे में आपके क्या विचार हैं? मैं इस पर अभी भी अनिश्चित हूँ
पॉल सॉलिंग

जवाबों:


7

HTTP बेसिक ऑथेंटिकेशन के लिए हर रिसोर्स रिक्वेस्ट के साथ यूजरनेम और पासवर्ड भेजना पड़ता है। उपयोगकर्ता नाम: पासवर्ड "प्राधिकरण" अनुरोध में पारित किया जाता है शीर्ष लेख base64 एन्कोडेड स्ट्रिंग "बेसिक" के साथ उपसर्ग करता है। यदि आपके सभी http संचार एन्क्रिप्टेड (ssl के माध्यम से) हैं, तो प्राधिकरण हेडर की जानकारी हमलावरों द्वारा आसानी से उपयोग करने में सक्षम नहीं होनी चाहिए क्योंकि यह संभावना नहीं है कि वे इसे पकड़ पाने में सक्षम होंगे।

बुनियादी प्रमाणीकरण के साथ एसएसएल एन्क्रिप्टेड http पर्याप्त होना चाहिए।


2
क्या आप इसका एक उदाहरण प्रदान कर सकते हैं? यह मैं क्या जरूरत है, बस बहुत अटक अभी ... है
Ganders

0

क्या टोकन / रहस्य के साथ OAuth / OpenID काम कर सकता है?

मैंने हाल ही में निम्नलिखित परिदृश्य पर विचार किया:

  • वेब एप्लिकेशन फ्रंट एंड
  • REST API को समझना
  • मोबाइल डिवाइस अनुप्रयोग, REST API तक पहुँचना

एक साधारण परीक्षण के रूप में, मैं इसमें सक्षम था:

  • OAuth का उपयोग करके वेब एप्लिकेशन के माध्यम से उपयोगकर्ताओं को प्रमाणित करें
  • REST API OAuth के माध्यम से अधिकृत है, जिसके परिणामस्वरूप एक रहस्य उत्पन्न होता है और ग्राहक को वापस भेज दिया जाता है
  • मोबाइल डिवाइस तब OAuth के माध्यम से प्रमाणित होगा, और फिर गुप्त के माध्यम से REST API द्वारा अधिकृत किया जाएगा

यह मोबाइल डिवाइस एप्लिकेशन को वेब फ्रंट एंड (उसी खाते) के माध्यम से समान क्रेडेंशियल्स के साथ प्रमाणित करने की अनुमति देगा और एपीआई तक पहुंच को अधिकृत करने में सक्षम होगा।


1
तो आपके उदाहरण में केवल उपयोगकर्ता ही प्रमाणीकरण कर रहा है। जिन क्लाइंट में API (वेब ​​ऐप, मोबाइल ऐप) पर कॉल किए जा रहे हैं, वे यह प्रमाणित नहीं कर रहे हैं कि वे कौन हैं। सैद्धांतिक रूप से, एपीआई सार्वजनिक है और कोई भी एप्लिकेशन एक उपयोगकर्ता नाम और पासवर्ड पोस्ट कर सकता है और संभावित रूप से एक टोकन वापस प्राप्त कर सकता है
पॉल सिपेलिंग

उपयोगकर्ता ऐप के माध्यम से प्रमाणित कर रहा है, और ऐप उपयोगकर्ता की ओर से कॉल कर रहा है। प्रमाणीकरण प्रक्रिया एक टोकन प्राप्त करती है, जिसे ऐप तब पास करता है।
ब्रेंडन ग्रीन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.