एपीआई अनुरोधों को प्रमाणीकृत करने के लिए कई योजनाएं हैं, और वे प्लगइन द्वारा प्रदान किए गए सामान्य प्रमाणीकरण से भिन्न हैं जैसे restful_authentication या act_as_authenticated। सबसे महत्वपूर्ण बात यह है कि ग्राहक सत्र बनाए रखेंगे, इसलिए लॉगिन की कोई अवधारणा नहीं है।
HTTP प्रमाणीकरण
आप बुनियादी HTTP प्रमाणीकरण का उपयोग कर सकते हैं। इस के लिए, API क्लाइंट एक नियमित उपयोगकर्ता नाम और पासवर्ड का उपयोग करेगा और सिर्फ इसलिए की तरह यूआरएल में रख:
http://myusername:[email protected]/
मुझे विश्वास है कि restful_authentication बॉक्स से बाहर इस का समर्थन करता है, तो आप अनदेखा कर सकते हैं या नहीं, किसी को उपयोग कर रहा है एपीआई या ब्राउज़र के माध्यम से आपका ऐप।
यहां एक नकारात्मक बात यह है कि आप उपयोगकर्ताओं से प्रत्येक उपयोगकर्ता नाम में अपना उपयोगकर्ता नाम और पासवर्ड डालने के लिए कह रहे हैं। एसएसएल पर इसे करके, आप इसे सुरक्षित बना सकते हैं।
मुझे नहीं लगता कि मैंने वास्तव में कभी ऐसा एपीआई देखा है जो इसका उपयोग करता है। यह मेरे लिए एक अच्छा विचार है, खासकर जब से यह वर्तमान प्रमाणीकरण योजनाओं द्वारा बॉक्स से बाहर समर्थित है, इसलिए मुझे नहीं पता कि समस्या क्या है।
API कुंजी
API प्रमाणीकरण सक्षम करने के लिए एक और आसान तरीका एपीआई कुंजी का उपयोग करने के लिए है। यह एक दूरस्थ सेवा के लिए अनिवार्य रूप से एक उपयोगकर्ता नाम है। जब कोई आपके एपीआई का उपयोग करने के लिए साइन अप करता है, तो आप उन्हें एपीआई कुंजी देते हैं। यह प्रत्येक अनुरोध के साथ पारित करने की जरूरत है।
यहां एक नकारात्मक बात यह है कि अगर किसी को किसी और की एपीआई कुंजी मिलती है, तो वे उस उपयोगकर्ता के रूप में अनुरोध कर सकते हैं। मुझे लगता है कि आपके सभी एपीआई अनुरोधों को HTTPS (SSL) का उपयोग करके, आप कुछ हद तक इस जोखिम को ऑफ़सेट कर सकते हैं।
एक और नकारात्मक बात यह है कि उपयोगकर्ता हर जगह एक ही प्रमाणीकरण प्रमाण-पत्र (एपीआई कुंजी) का उपयोग करते हैं। अगर वे एक एपीआई क्लाइंट तक पहुंच रद्द करना चाहते हैं तो उनका एकमात्र विकल्प उनकी एपीआई कुंजी को बदलना है, जो अन्य सभी क्लाइंट को भी अक्षम कर देगा। उपयोगकर्ताओं को एकाधिक एपीआई कुंजी उत्पन्न करने की अनुमति देकर इसे कम किया जा सकता है।
API कुंजी + गोपनीय कुंजी पर हस्ताक्षर
पदावनत (एक तरह से) -
गौरतलब है कि और अधिक जटिल नीचे OAuth देख किसी गुप्त कुंजी से अनुरोध पर हस्ताक्षर कर रहा है। यह अमेज़ॅन वेब सर्विसेज (एस 3, ईसी 2, और ऐसा करते हैं) यही है। अनिवार्य रूप से, आप उपयोगकर्ता को 2 कुंजी देते हैं: उनकी एपीआई कुंजी (यानी उपयोगकर्ता नाम) और उनकी गुप्त कुंजी (यानी पासवर्ड)। एपीआई कुंजी प्रत्येक अनुरोध के साथ प्रेषित है, लेकिन गुप्त कुंजी नहीं है। इसके बजाए, इसका उपयोग आमतौर पर एक और पैरामीटर जोड़कर प्रत्येक अनुरोध पर हस्ताक्षर करने के लिए किया जाता है।
आईआईआरसी, अमेज़ॅन अनुरोध के लिए सभी पैरामीटर लेकर और पैरामीटर नाम द्वारा उन्हें ऑर्डर करके इसे पूरा करता है। फिर, इस स्ट्रिंग को हैश कुंजी के रूप में उपयोगकर्ता की गुप्त कुंजी का उपयोग करके धोया जाता है। यह नया मान भेजा जाने से पहले अनुरोध के लिए एक नए पैरामीटर के रूप में जोड़ा गया है। अमेज़ॅन की तरफ, वे वही काम करते हैं। वे सभी पैरामीटर (हस्ताक्षर को छोड़कर) लेते हैं, उन्हें ऑर्डर करते हैं, और हैश गुप्त कुंजी का उपयोग करते हैं। यदि यह हस्ताक्षर से मेल खाता है, तो वे जानते हैं कि अनुरोध वैध है।
यहां नकारात्मकता जटिलता है। एपीआई डेवलपर और ग्राहकों दोनों के लिए यह योजना सही ढंग से काम करने के लिए एक दर्द है। क्लाइंट डेवलपर्स से बहुत से समर्थन कॉल और क्रोधित ईमेल की अपेक्षा करें जो काम करने के लिए काम नहीं कर सकते हैं।
OAuth
कुंजी + गुप्त हस्ताक्षर करने के साथ जटिलता के मुद्दों में से कुछ का मुकाबला करने के लिए, एक मानक OAuth बुलाया उभरा है। मूल ओएथ में कुंजी + गुप्त हस्ताक्षर का स्वाद है, लेकिन इसमें से अधिकतर मानकीकृत है और इसे libraries for many languages में शामिल किया गया है।
सामान्यतः, एपीआई निर्माता और उपभोक्ता दोनों पर अपनी कुंजी/हस्ताक्षर प्रणाली बनाने के बजाय ओएथ का उपयोग करना बहुत आसान है।
ओएथ भी प्रत्येक एपीआई उपभोक्ता के लिए अलग-अलग एक्सेस क्रेडेंशियल प्रदान करते हुए, स्वाभाविक रूप से पहुंच प्रदान करता है। यह उपयोगकर्ताओं को अपने अन्य उपभोग अनुप्रयोगों को प्रभावित किए बिना पहुंच को चुनिंदा रूप से निरस्त करने की अनुमति देता है।
विशेष रूप से रूबी के लिए, OAuth gem है जो ओथ के उत्पादकों और उपभोक्ताओं दोनों के लिए बॉक्स से समर्थन प्रदान करता है। मैंने इस मणि का उपयोग एपीआई बनाने और ओथ एपीआई का उपभोग करने के लिए भी किया है और बहुत प्रभावित हुआ था। अगर आपको लगता है कि आपके एप्लिकेशन को ओएथ की आवश्यकता है (सरल एपीआई कुंजी योजना के विपरीत), तो मैं आसानी से ओथ मणि का उपयोग करने की सलाह दे सकता हूं।
यदि ग्राहक जानता है कि कैसे अपने यूआरआई (.xml या अन्यथा जोड़कर) में हेरफेर करना है तो आपका एपीआई आरईएसटी नहीं है। – aehlke
यह रूबी के लिए एक अच्छा ओथ 2.0 सर्वर लाइब्रेरी है https://github.com/Lelylan/rest-oauth2- सर्वर – sparkle