यह वास्तव में परिदृश्य पर निर्भर करता है -। अधिक जानने के बिना यह कहना मुश्किल है एपीआई के बारे में - लेकिन "प्रमाणीकरण टोकन" का उपयोग सार्वभौमिक से बहुत दूर है, आप सही हैं कि कई एपीआई को उनकी आवश्यकता नहीं है (और उपयोग नहीं करते)। कई एपीआई को बस प्रत्येक अनुरोध के साथ एक एपीआई कुंजी भेजने की आवश्यकता होती है (अक्सर HTTPS के माध्यम से रोके जाने से यह रोकने के लिए), या उपयोगकर्ता की पहचान (When working with most APIs, why do they require two types of authentication, namely a key and a secret? देखें) साबित करने के लिए उपयोगकर्ता और यह भी एक "गुप्त कुंजी" के साथ एक डिजिटल हस्ताक्षर की पहचान के लिए एक API कुंजी की आवश्यकता है।
उपयोगकर्ता नाम/पासवर्ड नहीं हैं अक्सर सार्वजनिक एपीआई में प्रयोग किया जाता है क्योंकि वे पर्याप्त लचीले नहीं हैं और उपयोगकर्ता पहचान और आवेदन पहचान के बीच पर्याप्त "अलगाव" प्रदान नहीं करते हैं। जैसे आप फ़्लिकर एपीआई का उपयोग करने के लिए डेवलपर के रूप में पंजीकरण करते हैं और उस आईपीआई ऐप का उपयोग करते हुए एक आईफोन ऐप बनाते हैं - क्या आप वास्तव में ऐप में अपना डेवलपर उपयोगकर्ता नाम/पासवर्ड बनाना चाहते हैं? क्या होगा यदि आप बाद में अपना पासवर्ड बदल दें? क्या होगा यदि आप 5 ऐप्स विकसित करना चाहते हैं और उनके लिए अलग-अलग उपयोग ट्रैक करना चाहते हैं और किसी भी समय किसी भी ऐप को प्रभावित किए बिना बंद कर सकते हैं?
हालांकि, उन मामलों के लिए जहां आप वास्तव में केवल एक मानव उपयोगकर्ता की पहचान करना चाहते हैं, एक आवेदन नहीं (उदाहरण के लिए एक निजी एपीआई बैक-एंड जो केवल आपके स्वयं के अनुप्रयोगों की सेवा करेगा, सार्वजनिक एपीआई नहीं), ज्यादातर परिदृश्यों में मैं नहीं करता हूं ' आपके द्वारा सुझाए गए सुझावों के साथ कुछ भी गलत नहीं है, यानी प्रत्येक अनुरोध के साथ HTTPS पर उपयोगकर्ता नाम/पासवर्ड।ओह, वैसे, ऑथ टोकन में "प्रतिबंधित" होने का अतिरिक्त लाभ होता है (एक निश्चित समय पर समाप्त हो सकता है, केवल कुछ कार्यों तक सीमित हो सकता है), लेकिन जाहिर है यह केवल विशिष्ट परिदृश्यों में उपयोगी है।
भी: जैसा कि उपयोगकर्ता "डान" ऊपर बताया, जब एक एपीआई कि प्रत्येक अनुरोध के साथ उपयोगकर्ता नाम/पासवर्ड भेजने की आवश्यकता है (या किसी भी अनुरोध के साथ वास्तव में, भले ही वह सिर्फ लॉगिन अनुरोध है) को डिजाइन करने, सावधान आप कैसे करना हो यह। यदि आप एक तकनीक का उपयोग कर रहे हैं जो ब्राउज़र डिफ़ॉल्ट रूप से समर्थन करता है (जैसे HTTP बेसिक ऑथ), तो आप स्वयं को एपीआई को क्रॉस-डोमेन उपयोगकर्ताओं को सुरक्षित रूप से उजागर करने से रोक रहे हैं (यानी संभवत: आपके एपीआई को ब्राउज़र से सुरक्षित रूप से कभी भी सुरक्षित नहीं कहा जा सकता है , यानी AJAX/फ्लैश/सिल्वरलाइट कोड से)।
यह एक जटिल विषय है जिसे पूरी तरह से समझाया नहीं जा सकता है, लेकिन केवल याद रखें कि यदि आपका एपीआई किसी भी सुरक्षा प्रमाण-पत्र पर निर्भर है जिसे ब्राउजर याद कर सकता है और फिर प्रत्येक अनुरोध में "चुपचाप" इंजेक्ट करता है (उदाहरण के लिए HTTP बेसिक ऑथ , कुकीज़), तो किसी भी क्रॉस-डोमेन तकनीक (सीओआरएस, जेएसओएनपी, crossdomain.xml, आदि) का उपयोग कर उस एपीआई में क्रॉस-डोमेन पहुंच को सक्षम करना सुरक्षित नहीं है।
स्रोत
2012-12-22 16:31:29
सभी महान जानकारी लेकिन मैं उलझन में हूं; 1- मुझे अपनी आरईएसटी जर्सी सेवा में उपयोगकर्ता नाम पासवर्ड कैसे भेजना चाहिए, मैं HTTP शीर्षलेख में भेजने की योजना बना रहा था। 2- और क्या आप समझ सकते हैं कि "आप किसी भी क्रॉस-डोमेन तकनीक का उपयोग करके उस एपीआई में क्रॉस-डोमेन पहुंच को सक्षम करने के लिए सुरक्षित नहीं हैं" मेरे पास कोई अजीब विचार नहीं है इसका मतलब क्या हो सकता है :) – Spring
फिर से, यह सब इस पर निर्भर करता है परिदृश्य। क्या यह कई डेवलपर्स या निजी व्यक्ति के लिए एक सार्वजनिक एपीआई है जो सिर्फ आपके अपने अनुप्रयोगों के लिए बैक-एंड प्रदान करता है? क्या आप एपीआई, या मानव अंत उपयोगकर्ता का उपयोग कर आवेदन प्रमाणित करने की कोशिश कर रहे हैं? मैंने जो भी पैराग्राफ (क्रॉस-डोमेन एक्सेस के बारे में) में कहा था, केवल तभी मायने रखता है जब यह एक सार्वजनिक एपीआई * है और * आप चाहते हैं कि लोग ब्राउज़र से इसे एक्सेस कर सकें (यानी AJAX कोड से, फ़्लैश से या सिल्वरलाइट से)। अन्य सभी मामलों में, आप उस सामान को अनदेखा कर सकते हैं। –
यहां tnx मेरा ऐप समझाया गया है; http://stackoverflow.com/questions/13997040/jersey-request-for- प्रमाणीकरण – Spring