वास्तव में OAuth (खुला प्राधिकरण) क्या है?


201

वास्तव में OAuth (खुला प्राधिकरण) क्या है?

मैंने कुछ जानकारियों को चमकाया है

लेकिन मैं सीखना और जानना चाहता हूं। मैं जीवनचक्र के बारे में जानकारी ढूंढ रहा हूं। अधिकांश सामाजिक नेटवर्क इस खुले प्रोटोकॉल पर निर्भर क्यों हैं?

क्या यह विभिन्न तकनीकों (जैसे ASP.NET) के साथ निकट भविष्य में एक वास्तविक तथ्य बन जाएगा?

जवाबों:


327

वास्तव में OAuth (खुला प्राधिकरण) क्या है?

OAuth एक संसाधन प्रदाता (जैसे फेसबुक) को सूचित करने की अनुमति देता है कि संसाधन स्वामी (जैसे आप) किसी तीसरे पक्ष (जैसे फेसबुक एप्लिकेशन) को उनकी जानकारी (जैसे आपके दोस्तों की सूची ) तक पहुंच की अनुमति देता है ।

यदि आप इसे स्पष्ट रूप से पढ़ते हैं, तो मैं आपका भ्रम समझूंगा। तो चलो एक ठोस उदाहरण के साथ चलते हैं: एक और सामाजिक नेटवर्क में शामिल होना!

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

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

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

यह वह जगह है जहां OAuth आता है। यदि आपका GMail OAuth प्रोटोकॉल का समर्थन करता है, तो लिंक्डइन आपको अपने GMail संपर्कों की सूची तक पहुंचने के लिए उन्हें अधिकृत करने के लिए कह सकता है।

OAuth के लिए अनुमति देता है:

  1. विभिन्न पहुँच स्तर: केवल पढ़ने के लिए वी.एस. यह आपको अपने उपयोगकर्ता सूची या द्वि-दिशात्मक पहुंच का उपयोग करने की अनुमति देता है ताकि आप अपने नए लिंक्डइन दोस्तों को अपने जीमेल संपर्कों से स्वचालित रूप से सिंक्रनाइज़ कर सकें।
  2. एक्सेस ग्रैन्युलैरिटी: आप केवल अपनी संपर्क जानकारी (उपयोगकर्ता नाम, ई-मेल, जन्म तिथि, आदि) या अपने दोस्तों, कैलेंडर और क्या नहीं की पूरी सूची तक पहुँच प्रदान करने का निर्णय ले सकते हैं।
  3. यह आपको संसाधन प्रदाता के आवेदन से पहुंच का प्रबंधन करने की अनुमति देता है। यदि तृतीय-पक्ष एप्लिकेशन पहुंच को रद्द करने के लिए तंत्र प्रदान नहीं करता है, तो आप उनकी जानकारी तक पहुंचने के साथ अटक जाएंगे। OAuth के साथ, किसी भी समय पहुंच को रद्द करने का प्रावधान है।

क्या यह निकट भविष्य में एक वास्तविक (मानक?) बन जाएगा?

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

व्यवहार में, यह सामाजिक नेटवर्क मॉडल को बहुत अच्छी तरह से फिट बैठता है। यह उन सामाजिक नेटवर्क के लिए विशेष रूप से लोकप्रिय है जो तृतीय-पक्ष "प्लगइन्स" की अनुमति देना चाहते हैं। यह एक ऐसा क्षेत्र है जहां संसाधनों की पहुंच स्वाभाविक रूप से आवश्यक है और यह स्वाभाविक रूप से अविश्वसनीय भी है (यानी आपके पास उन अनुप्रयोगों पर कोई गुणवत्ता या नियंत्रण नहीं है)।

मैंने जंगली में कई अन्य उपयोगों को नहीं देखा है। मेरा मतलब है, मैं, कि अपने बैंक खाते की स्वचालित रूप से उपयोग करेंगे एक ऑनलाइन वित्तीय सलाह फर्म के बारे में पता नहीं है, हालांकि यह कर सकता है तकनीकी रूप से रास्ता है कि इस्तेमाल किया जा।


6
आपने इसे समझना आसान बना दिया। हो सकता है कि मैंने पहली पंक्ति को इस तरह से बदल दिया हो। "OAuth एक संसाधन प्रदाता (उदाहरण के लिए जीमेल) को सूचित करने की अनुमति देता है कि संसाधन स्वामी (जैसे आप एक जीमेल उपयोगकर्ता) किसी तीसरे पक्ष (जैसे आपका लिंक्डइन खाता) को उनकी जानकारी (जैसे आपकी संपर्क सूची) तक पहुंच की अनुमति देता है।" जो आपने लिखा है यानी प्रदाता और तीसरा पक्ष 'दोनों' फेसबुक भ्रमित कर रहा है। यद्यपि यह थोड़े दिलचस्प परिदृश्य का परिचय देता है, लेकिन ओउथ का उपयोग आपकी कंपनी की विभिन्न परियोजनाओं के बीच आंतरिक रूप से भी किया जा सकता है। सही? क्या इसीलिए आपने एक जटिल परिचय पेश किया?
Honey

मेरी समझ के अनुसार, OAuth का उद्देश्य क्रेडेंशियल साझा किए बिना संसाधन स्वामी की ओर से तृतीय-पक्ष एप्लिकेशन को समय-सीमित प्राधिकरण देना है। मुझे यह जानने के लिए उत्सुक होना चाहिए कि क्या मुझे मोबाइल एप्लिकेशन से अपने एप्लिकेशन सर्वर पर होस्ट किए गए API का उपभोग करने के लिए OAuth की आवश्यकता है (कोई तृतीय-पक्ष शामिल नहीं है)?
मोनिश कांबले

जब एक विश्वसनीय पार्टी मुझे अधिकृत करती है, तो क्या इसका मतलब यह नहीं है कि यह एक प्रमाणीकरण तंत्र भी है?
चर

245

OAuth क्या है

OAuth केवल एक सुरक्षित प्राधिकरण प्रोटोकॉल है जो अपने पासवर्ड को उजागर किए बिना उपयोगकर्ता डेटा तक पहुंचने के लिए तीसरे पक्ष के आवेदन के प्राधिकरण से संबंधित है। जैसे। (कई वेबसाइटों में fb, gPlus, twitter के साथ लॉगिन करें ..) सभी इस प्रोटोकॉल के तहत काम करते हैं।

शामिल पक्ष

जब आप इसमें शामिल पार्टियों को जानते हैं तो प्रोटोकॉल आसान हो जाता है। मूल रूप से इसमें तीन पक्ष शामिल हैं: oAuth प्रदाता, oAuth ग्राहक और मालिक।

  • ग्राहक (जो आपके क्रेडेंशियल तक पहुँचना चाहता है)
  • oAuth प्रदाता (उदा। फेसबुक, ट्विटर ...)
  • मालिक (फेसबुक, ट्विटर के साथ व्यक्ति .. खाता)

यह काम किस प्रकार करता है?

मुझे एक ऐसा परिदृश्य मिला है, जहां एक वेबसाइट (स्टैकओवरफ़्लो) को फेसबुक फीचर के साथ लॉगिन जोड़ने की आवश्यकता है। इस प्रकार facebook oAuth प्रदाता है और स्टैकओवरफ़्लो oAuth क्लाइंट है।

  1. यह कदम ऐप के डेवलपर द्वारा किया जाता है । बहुत शुरुआत में facebook (oAuth प्रदाता) को stackoverflow (oAuth क्लाइंट) के बारे में कोई पता नहीं है क्योंकि उनके बीच कोई लिंक नहीं है। तो सबसे पहला कदम फेसबुक डेवलपर्स साइट के साथ stackoverflow को पंजीकृत करना है । यह मैन्युअल रूप से किया जाता है, जहां डेवलपर्स को ऐप की जानकारी जैसे ऐप का नाम, वेबसाइट, लोगो, रीडायरेक्ट उरल (महत्वपूर्ण एक) फेसबुक को देने की आवश्यकता होती है। तब स्टैकओवरफ़्लो सफलतापूर्वक पंजीकृत हो गया है, फ़ेसबुक से क्लाइंट आईडी, क्लाइंट सीक्रेट आदि प्राप्त कर लिया है और OAUTH के साथ चल रहा है । यहां छवि विवरण दर्ज करें

    2. अब जब stackoverflow का उपयोगकर्ता fb बटन से लॉगिन करता है । Stackoverflow facebook को ClientId के साथ रिक्वेस्ट करता है (fb इसका उपयोग क्लाइंट को पहचानने के लिए करता है) और redirectUrl (fb सफलता के बाद इस url पर वापस आ जाएगा)। ऐसा करने पर उपयोगकर्ता facebook लॉगिन पेज पर रीडायरेक्ट हो जाता है। यह सबसे अच्छा हिस्सा उपयोगकर्ता है (स्वामी) अपने फेसबुक को स्टैकओवरफ्लो को विश्वसनीय नहीं दे रहा है।

यहां छवि विवरण दर्ज करें

यहां छवि विवरण दर्ज करें

  1. मालिक के बाद Stackoverflow की जानकारी का उपयोग करने की अनुमति । तब फेसबुक स्टेपओवरफ्लो पर वापस रीडायरेक्ट करता है, साथ ही स्टेप 2 पर उपलब्ध कराए गए रीडायरेक्लो का उपयोग करते हुए ऑक्टाकोर के साथ ।
  2. तब सब कुछ ठीक है यह सुनिश्चित करने के लिए प्राप्त ऑर्डकोड के साथ फेसबुक के साथ स्टाकेवरफ्लो संपर्क ।
  3. तभी facebook stackoverflow को एक्सेस टोकन देगा । तब पासवर्ड का उपयोग किए बिना स्वामी की जानकारी को पुनः प्राप्त करने के लिए स्टैकओवरफ़्लो द्वारा एक्सेस टोकन का उपयोग किया जाता है। यह ऑउथ का संपूर्ण उद्देश्य है, जहां कभी भी तीसरे पक्ष के आवेदनों के संपर्क में नहीं आता है।

अधिक जानकारी के लिए:

त्वरित वीडियो

वेब लिंक


सुनिश्चित करें कि लोकलहोस्ट भी एक url है और आप यहां एक्सपायरी क्यों नहीं करते और रिजल्ट पोस्ट क्यों करते हैं।
बालमन रावत

2
हाँ, आप IP पते को रीडायरेक्ट URL के रूप में उपयोग कर सकते हैं: redirect_uri = ' 127.0.0.1.14200 ' और OAuth डोमेन नाम 127.0.0.1
सैमसन Maben

लेकिन क्या यह ईमेल काम करने के लिए oAuth क्लाइंट और oAuth प्रदाता दोनों पर समान होना चाहिए?
रोवयदा खैरी

अच्छा स्पष्टीकरण
JayD

OAuth 2 एक सुरक्षा प्रोटोकॉल है, न कि प्राधिकरण प्रोटोकॉल। जवाब गलत नोट पर शुरू होता है।
रजत

13

सीधे शब्दों में कहें, OAuth सीधे तौर पर आपकी वेबसाइट पर आपकी उपयोगकर्ता लॉगिन जानकारी प्राप्त किए बिना अनुप्रयोगों के लिए आपकी जानकारी को क्रेडेंशियल प्राप्त करने का एक तरीका है। उदाहरण के लिए यदि आप अपनी वेबसाइट पर एक एप्लीकेशन लिखते हैं और चाहते हैं कि वह किसी उपयोगकर्ता के फेसबुक अकाउंट से डेटा का उपयोग करे, तो आप कॉलबैक यूआरएल के माध्यम से टोकन प्राप्त करने के लिए OAuth का उपयोग कर सकते हैं और फिर उस टोकन का उपयोग करने के लिए facebook API से कॉल कर सकते हैं टोकन समाप्त होने तक डेटा का उपयोग करें। वेबसाइटें इस पर भरोसा करती हैं क्योंकि यह प्रोग्रामर को उपयोगकर्ता के बिना अपने डेटा का उपयोग करने की अनुमति देता है, ताकि वे सीधे अपनी जानकारी का खुलासा कर सकें और अपनी साख ऑनलाइन के आसपास फैला सकें लेकिन फिर भी डेटा को एक स्तर की सुरक्षा प्रदान करते हैं। क्या यह प्राधिकरण का वास्तविक तरीका बन जाएगा? शायद, यह हाल ही में ट्विटर, फेसबुक से बहुत समर्थन प्राप्त कर रहा है,


14
OAuth एक प्रमाणीकरण प्रक्रिया नहीं है, बल्कि एक प्राधिकरण प्रक्रिया है।
एंड्रे कैरन

मुझे नहीं लग रहा है कि एप्लिकेशन को सीधे प्रमाणीकरण की आवश्यकता है, लेकिन उपयोगकर्ता सेवा प्रदाता के साथ प्रमाणित करता है कि मुझे लगता है कि उपयोगकर्ता डेटा तक पहुंचने के लिए कुछ तीसरे पक्ष को अधिकृत करने के लिए ...
4:17

मैंने सटीक जोड़ा क्योंकि OpenID विशेष रूप से प्रत्यायोजित प्रमाणीकरण (एक मौजूदा बाहरी खाते का फिर से उपयोग) के उद्देश्य से इस उम्मीद में है कि लोग अपने शेयर क्रेडेंशियल्स को साझा करना बंद कर दें। OAuth सूचना विनिमय की सुविधा के लिए विशेष रूप से प्राधिकरण (संसाधनों का पुन: उपयोग) करने के उद्देश्य से है।
एंड्रे कैरन

9

Oauth निश्चित रूप से गति प्राप्त कर रहा है और उद्यम एपीआई के बीच भी लोकप्रिय हो रहा है। ऐप और डेटा संचालित दुनिया में, उद्यम Google, फेसबुक, ट्विटर के साथ बाहरी दुनिया में अधिक से अधिक एपीआई का विस्तार कर रहे हैं। इस विकास के साथ प्रमाणीकरण का एक 3 तरह त्रिकोण बन जाता है

1) एपीआई प्रदाता- कोई भी उद्यम जो एपीआई द्वारा अपनी परिसंपत्तियों को उजागर करता है, अमेज़ॅन, टारगेट आदि 2 कहते हैं) डेवलपर - वह जो इस एपीआई 3 से अधिक मोबाइल / अन्य एप्लिकेशन का निर्माण करता है) अंतिम उपयोगकर्ता - सेवा द्वारा प्रदान की गई सेवा का अंतिम उपयोगकर्ता - अमेज़न के पंजीकृत / अतिथि उपयोगकर्ता

अब यह सुरक्षा से संबंधित एक स्थिति विकसित करता है - (मैं इनमें से कुछ जटिलताओं को सूचीबद्ध कर रहा हूं) 1) आप एक अंतिम उपयोगकर्ता के रूप में डेवलपर को आपकी ओर से एपीआई का उपयोग करने की अनुमति देना चाहते हैं। 2) एपीआई प्रदाता को डेवलपर और अंतिम उपयोगकर्ता को प्रमाणित करना होगा 3) अंतिम उपयोगकर्ता को सहमति देने के लिए अनुमति देने में सक्षम होना चाहिए और उन्होंने जो सहमति दी है उसे 4 के लिए रद्द करना चाहिए) डेवलपर के पास एपीआई प्रदाता के साथ विश्वास का स्तर भिन्न हो सकता है, जो उसे दी गई अनुमतियों का स्तर अलग है

ओउथ एक प्राधिकरण ढांचा है जो उपर्युक्त समस्या को मानक तरीके से हल करने की कोशिश करता है। एपीआई और एप्स की प्रमुखता के साथ यह समस्या अधिक से अधिक प्रासंगिक हो जाएगी और कोई भी मानक जो इसे हल करने की कोशिश करता है - चाहे वह ouath हो या कोई अन्य - एक एपीआई प्रदाता / डेवलपर और यहां तक ​​कि अंतिम उपयोगकर्ता के रूप में देखभाल करने के लिए कुछ होगा!


9

OAuth ( O pen Auth orization) एक्सेस देने / डेलिगेशन प्रोटोकॉल के लिए एक खुला मानक है। यह इंटरनेट उपयोगकर्ताओं के लिए वेबसाइटों या एप्लिकेशन को अन्य वेबसाइटों पर उनकी जानकारी तक पहुंच प्रदान करने के लिए एक मार्ग के रूप में उपयोग करता है, लेकिन उन्हें पासवर्ड दिए बिना। इससे नहीं निपटता प्रमाणीकरण से संबंधित नहीं है

या

OAuth 2.0 एक प्रोटोकॉल है जो एक उपयोगकर्ता को एक साइट पर अपने संसाधनों तक सीमित पहुंच प्रदान करने की अनुमति देता है, किसी अन्य साइट पर, उनकी साख को उजागर किए बिना।

  • सादृश्य 1: कई लग्जरी कारें आज वैलेट की के साथ आती हैं। यह एक विशेष कुंजी है जिसे आप पार्किंग परिचर देते हैं और आपकी नियमित कुंजी के विपरीत, कार को एक या दो मील से अधिक ड्राइव करने की अनुमति नहीं देगा। कुछ वैलेट कीज़ ट्रंक को नहीं खोलेंगे, जबकि अन्य आपके ऑनबोर्ड सेल फोन एड्रेस बुक तक पहुंच को रोक देंगे। भले ही वैलेट की कुंजी कितनी भी प्रतिबंध लगाए, विचार बहुत चालाक है। आप अपनी कार की सीमित पहुंच किसी विशेष कुंजी के साथ देते हैं, जबकि अपनी नियमित कुंजी का उपयोग करते हुए सब कुछ अनलॉक करते हैं। SSL0 से src

  • सादृश्य 2: मान लें, हम बैंक खाते के लिए एक आवेदन पत्र भरना चाहते हैं। यहां ओउथ आवेदक द्वारा फॉर्म भरने के बजाय बैंक, आधार या पासपोर्ट का उपयोग करके फॉर्म भर सकता है।

    यहाँ निम्नलिखित तीन संस्थाएँ शामिल हैं:

    1. आवेदक अर्थात मालिक
    2. बैंक खाता OAuth ग्राहक है, उन्हें जानकारी चाहिए
    3. Adhaar / Passport ID OAuth प्रदाता है

7

ऑथ ऑथोराइज़ेशन ऑथराइज़िंग (किसी ऐसे व्यक्ति को चुनना जो आपके लिए ऑथराइज़ेशन कर सकता है) के बारे में है। ध्यान दें कि प्रमाणीकरण और प्राधिकरण अलग-अलग चीजें हैं। OAuth प्राधिकरण (एक्सेस कंट्रोल) है, और यदि आप प्रमाणीकरण (आईडी सत्यापन) को भी लागू करना चाहते हैं, तो OID के शीर्ष पर OpenID प्रोटोकॉल का उपयोग किया जा सकता है।

Facebook, Google, Github, ... जैसी सभी बड़ी कंपनियां आजकल इस तरह के प्रमाणीकरण / प्राधिकरण का उपयोग करती हैं। उदाहरण के लिए, मैंने सिर्फ अपने Google खाते का उपयोग करके इस वेबसाइट पर साइन इन किया है, इसका मतलब है कि Stackoverflow को मेरा पासवर्ड नहीं पता है, यह Google से भत्ता प्राप्त करता है जहां मेरा पासवर्ड (जाहिर है) सहेजा गया है। यह बहुत सारे लाभ देता है, उनमें से एक है; निकट भविष्य में आपको हर वेबसाइट पर कई खाते बनाने होंगे। एक वेबसाइट (जिस पर आपको सबसे अधिक भरोसा है) का उपयोग अन्य सभी वेबसाइटों में लॉगिन करने के लिए किया जा सकता है। तो आपको केवल एक पासवर्ड याद रखना होगा।


2

OAuth जब हम Facebook / Google बटन के साथ SO खाते को साइन अप करते हैं तो हुआ।

  1. एप्लिकेशन (SO) उपयोगकर्ता को प्रदाता के प्राधिकरण URL पर पुनर्निर्देशित करता है। (वेब पेज प्रदर्शित करना उपयोगकर्ता से पूछ रहा है कि क्या वह अपना डेटा पढ़ने और अपडेट करने के लिए एप्लिकेशन एक्सेस देना चाहता है)।
  2. उपयोगकर्ता आवेदन प्रक्रिया को मंजूरी देने के लिए सहमत हैं।
  3. सेवा प्रदाता उपयोगकर्ता को अनुप्रयोग (एसओ) पर वापस भेज देता है, पैरामीटर के रूप में प्राधिकरण कोड पारित करता है।
  4. एसओ एक पहुंच अनुदान के लिए कोड का आदान-प्रदान करता है।

स्रोत: OAuth1 सेवा प्रदाता


नमस्कार, मुझे REST API के साथ काम करने की आवश्यकता है इसलिए oAuth स्थापित करें, वास्तव में मैं Magento का उपयोग कर रहा हूं, स्थानीयहोस्ट में, मैंने oAuth स्थापित किया है, लाइव सर्वर में मैं कैसे इंस्टाल कर सकता हूं, मैं GoDaddy VPS सर्वर का उपयोग कर रहा हूं, कोई मदद? @ जोने जो
जेम

@ रथिनम हाय, II मदद करना चाहेगा, लेकिन यह मेरी विशेषज्ञता से बाहर है। बहुत अफसोस।
जॉन जो

क्या मैं OAuth के बिना REST API का उपयोग कर सकता हूं? @ जॉन जो
जेम

@ रतिनम हाँ, यह आप पर निर्भर करता है
जॉन जो

1

OAuth प्राधिकरण के लिए एक खुला मानक है, जिसका उपयोग आमतौर पर इंटरनेट उपयोगकर्ताओं के लिए उनके पासवर्ड को उजागर किए बिना अपने Microsoft, Google, फेसबुक या ट्विटर खातों का उपयोग करके तीसरे पक्ष की वेबसाइटों में लॉग इन करने के लिए किया जाता है।


2
मुझे लगता है कि आपने OAuth और OpenID को गलत किया है
A23149577

0

OAuth एक प्रोटोकॉल है जिसका उपयोग रिसोर्स ओनर (facebook, google, tweeter, microsoft live इत्यादि) से किया जाता है ताकि आवश्यक जानकारी प्रदान की जा सके, या थर्ड पार्टी सिस्टम (उदाहरण के लिए आपकी साइट) को लिखने की अनुमति प्रदान की जा सके। OAuth प्रोटोकॉल के बिना अधिकांश संभावना तीसरे भाग सिस्टम के लिए उपलब्ध होनी चाहिए जो उन प्रणालियों के बीच संचार का अनुचित तरीका होगा।

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