OAuth 2 सुरक्षा टोकन का उपयोग करके पुनरावृत्ति के हमलों जैसी चीजों से कैसे बचाता है?


564

मैं यह समझ के रूप में, घटनाओं के निम्नलिखित श्रृंखला के लिए आदेश में OAuth 2 में होता है Site-Aउपयोग करने के लिए उपयोगकर्ता की से जानकारी Site-B

  1. Site-Aरजिस्टर करता है Site-B, और एक गुप्त और एक आईडी प्राप्त करता है।
  2. जब उपयोगकर्ता बताता है Site-Aउपयोग करने के लिए Site-B, उपयोगकर्ता को भेजा जाता है Site-B, जहां वे बता Site-Bकि वे वास्तव में की तरह देने के लिए Site-Aविशेष जानकारी के लिए अनुमति।
  3. Site-Bएक प्राधिकरण कोड के साथ, उपयोगकर्ता को वापस भेज देता है Site-A
  4. Site-Aफिर उस Site-Bसिक्योरिटी कोड को सिक्योरिटी टोकन के बदले में उसके सीक्रेट के साथ वापस भेज देता है ।
  5. Site-Aफिर अनुरोधों के साथ सुरक्षा टोकन को बंडल करके उपयोगकर्ता कीSite-B ओर से अनुरोध करता है।

कैसे सुरक्षा और एन्क्रिप्शन के मामले में इस कार्य के सभी करता है, एक उच्च स्तर पर? OAuth 2 सुरक्षा टोकन का उपयोग करके पुनरावृत्ति के हमलों जैसी चीजों से कैसे बचाता है?


49
: OAuth2 बस यहाँ समझाया gist.github.com/mziwisky/10079157
पाओलो

4
युक्ति पढ़ें: tools.ietf.org/html/rfc6749 आप आश्चर्यचकित हो सकते हैं कि यह कितना समझ में आता है। यह सही भी है जो बहुत बुरा नहीं भी हो सकता है।
क्रिश वंडरमोटेन

1
यह सवाल और इसका (वर्तमान) सभी OAuth 2.0 (यानी code) में एक विशेष "अनुदान प्रकार" पर ध्यान केंद्रित करता है, लेकिन OAuth 2.0 में परिभाषित अन्य अनुदान प्रकार हैं जो विभिन्न उपयोग के मामलों (जैसे गैर-उपयोगकर्ता से संबंधित) के लिए प्रासंगिक हैं।
हंस जेड।

4
ओह, "IdProvider साइट" जैसे कुछ और पठनीय के साथ "साइट B" को क्यों नहीं बदला जाए?
यूरी

जवाबों:


1378

वास्तविक जीवन में OAuth 2.0 कैसे काम करता है:

मैं काम करने के अपने रास्ते पर ओलाफ की बेकरी से गाड़ी चला रहा था जब मैंने खिड़की में सबसे स्वादिष्ट डोनट देखा - मेरा मतलब है, बात चॉकलेट की अच्छाई को टपका रही थी। तो मैं अंदर गया और मांग की "मुझे वह डोनट चाहिए!"। उन्होंने कहा कि "यह सुनिश्चित करें कि $ 30 हो जाएगा।"

हाँ मैं जानता हूँ कि, एक डोनट के लिए $ 30! यह स्वादिष्ट होना चाहिए! मैं अपने बटुए के लिए पहुंच गया जब अचानक मैंने सुना महाराज चिल्लाना "आप के लिए नहीं! कोई अच्छी बात नहीं।" मैंने पूछा: क्यों? उन्होंने कहा कि वह केवल बैंक स्थानान्तरण स्वीकार करता है।

गंभीरता से? हां, वह गंभीर था। मैं लगभग दूर वहीं चला गया है, लेकिन फिर डोनट मेरे लिए बाहर बुलाया: "मुझे खाओ, मैं स्वादिष्ट हूँ ..."। मैं एक डोनट से आदेशों की अवज्ञा करने वाला कौन हूं? मैं ठीक कहा।

उसने मुझे उसके नाम के साथ एक नोट सौंपा (महाराज, डोनट नहीं): "उन्हें बताओ ओलाफ ने तुम्हें भेजा था"। उसका नाम पहले से ही नोट पर था, इसलिए मुझे नहीं पता कि कहने का मतलब क्या था, लेकिन ठीक था।

मैंने अपने बैंक को एक घंटा और निकाल दिया। मैंने नोट टेलर को सौंप दिया; मैंने उससे कहा कि ओलाफ ने मुझे भेजा है। उसने मुझे उन लुक में से एक दिया, जो कहता है कि "मैं पढ़ सकता हूं"।

उसने मेरा नोट लिया, मेरी आईडी मांगी, मुझसे पूछा कि उसे देने के लिए कितना पैसा ठीक है। मैंने उसे $ 30 डॉलर बताए। वह कुछ scribbling किया था और मुझे एक और नोट सौंप दिया। इस पर एक नंबर का एक गुच्छा था, मैंने अनुमान लगाया कि वे कैसे नोटों का ट्रैक रखते हैं।

उस बिंदु पर मैं भूख से मर रहा हूं। मैं वहां से बाहर निकल गया, एक घंटे और बाद में मैं वापस आ गया था, मेरे नोट के साथ ओलाफ के सामने खड़ा था। उन्होंने इसे लिया, इसे देखा और कहा, "मैं वापस आऊंगा"।

मुझे लगा कि वह मेरा डोनट मिल रहा है, लेकिन 30 मिनट के बाद मुझे संदेह होने लगा। तो मैंने काउंटर के पीछे आदमी से पूछा "ओलाफ कहां है?"। उसने कहा "वह पैसे लेने गया था"। "तुम क्या मतलब है?"। "वह बैंक में नोट लेते हैं"।

हुह ... तो ओलाफ ने नोट लिया कि बैंक ने मुझे दिया और मेरे खाते से पैसे निकालने के लिए बैंक में वापस चला गया। चूँकि उसके पास वह नोट था जो बैंक ने मुझे दिया था, बैंक को पता था कि वह वह लड़का है जिसके बारे में मैं बात कर रहा था, और क्योंकि मैंने बैंक से बात की थी, वे केवल उसे $ 30 देना जानते थे।

मुझे यह पता लगाने में काफी समय लगा होगा कि जब तक मैंने देखा, तब तक ओलाफ मेरे सामने खड़ा था और अंत में मुझे अपना डोनट सौंप रहा था। मेरे जाने से पहले मुझे पूछना पड़ा, "ओलाफ, क्या तुमने हमेशा इस तरह डोनट्स बेचा?"। "नहीं, मैं इसे अलग करता था।"

हुह। जब मैं अपनी कार में वापस जा रहा था तो मेरा फोन बज उठा। मैंने जवाब देने की जहमत नहीं उठाई, शायद यह मेरा काम था कि मुझे आग लगा देना, मेरा बॉस ऐसा है। इसके अलावा, मैं उस प्रक्रिया के बारे में सोच रहा था जिसे मैंने अभी-अभी जाना है।

मेरा मतलब है कि इसके बारे में सोचें: मैं ओलाफ को अपने बैंक खाते से $ 30 लेने दे सकता था, बिना उसे मेरे खाते की जानकारी दिए। और मुझे यह चिंता करने की ज़रूरत नहीं थी कि वह बहुत अधिक पैसा लेगा क्योंकि मैंने पहले ही बैंक को बताया था कि उसे केवल $ 30 लेने की अनुमति थी। और बैंक जानता था कि वह सही आदमी है क्योंकि उसके पास वह नोट था जो उन्होंने मुझे ओलाफ को देने के लिए दिया था।

ठीक है, यकीन है कि मैं नहीं बल्कि उसे $ 30 मेरी जेब से हाथ होगा। लेकिन अब है कि वह है कि नोट किया था मैं सिर्फ बैंक उसे $ 30 हर हफ्ते ले जाने पर, बता सकते हैं तो मैं सिर्फ बेकरी में प्रदर्शित हो सकता है और मैं अब और बैंक में जाने के लिए नहीं था। मैं भी फोन पर डोनट आदेश अगर मैं चाहता था सकता है।

कि डोनट घृणित था - बेशक मुझे लगता है कि कभी नहीं करना चाहते हैं।

मुझे आश्चर्य है कि अगर इस दृष्टिकोण में व्यापक अनुप्रयोग हैं। उन्होंने कहा कि यह उनका दूसरा तरीका था, मैं इसे ओलाफ 2.0 कह सकता हूं। वैसे भी मुझे बेहतर घर मिलता है, मैं एक नई नौकरी की तलाश में हूँ। लेकिन इससे पहले कि मैं शहर भर में है कि नई जगह से उन स्ट्रॉबेरी शेक में से एक मिलता है, मैं कुछ है कि डोनट का स्वाद दूर धोने के लिए की जरूरत है।


41
ठीक है, व्यवहार में ओलाफ को आपके खाते से $ 30 लेने में सक्षम होना चाहिए, भले ही आप कोई भी डोनट ऑर्डर न करें। दिलचस्प बात यह है कि वास्तविक oauth2.0 परिदृश्यों में यह मुख्य लक्ष्य है :) यह निश्चित रूप से एक महान जवाब है, लेकिन जो कोई भी इस सवाल को पढ़ रहा है, जो पाओलो ने सवाल के अपने टिप्पणी में उल्लेख किया है ( gist.github.com/mitiwisky/ 10079157 )। अवधारणा को स्पष्ट करने के लिए एक अच्छा पूरक पाठ।
Samiron

4
शानदार जवाब लेकिन 2 अंक जुटाने के लिए: 1. जैसा @Samiron ने बताया, ओलाफ कभी भी 30 डॉलर लेने में सक्षम होगा। 2. एक वास्तविक OAuth2.0 परिदृश्य में, ओलाफ बैंक से पैसे लेने से पहले डोनट की सेवा नहीं कर पाएगा। इस उदाहरण में, वह चेक रख सकता था और लुइस को अच्छी तरह से अर्जित डोनट सौंप सकता था। इसलिए अगर हम इसे बनाने के लिए उदाहरण बदलते हैं कि मैं ओलाफ को किसी तीसरे पक्ष से आटा प्राप्त करने के लिए अधिकृत करता हूं जो मुझे पता है, तो इससे अधिक समझ में आएगा क्योंकि ओलाफ को डोनट पकाना शुरू करने से पहले आटा प्राप्त करना होगा (अकेला डोना ओलाफ मानते हुए प्रदर्शन उद्देश्य के लिए ही किया था!)।
टिकर 23

4
ticker23, डोनट कहानी दुर्भाग्य से अपने तकनीकी सुधार धड़कता है - जब मैंने इसे पढ़ा मैं कहानी पर बेच दिया गया था। यह होमर सिम्पसन ने लिखा है।
शीव

4
@Prageeth Olaf ने हमेशा एक सुरक्षित बॉक्स में नोट को बैंक से और उसके पास ले जाता है जो स्याही से छेड़छाड़ करता है, तो नोट को पुनर्स्थापित करने के लिए कई जीवनकाल लगेंगे। बैंक ग्राहकों को अपनी पहली यात्रा में उंगलियों के निशान भी लेता है, अगर ओलाफ एक बेकिंग दुर्घटना में अपनी उंगलियों को खो देता है, तो उसे लुइस को फिर से बैंक हस्तांतरण को सेटअप करने के लिए कहना होगा, और बैंक को अगली बार अपने ब्रेकिंग ब्रेड टैटू द्वारा ओलाफ की पहचान करनी होगी ।
क्रिस

11
मैं अगले व्यक्ति के रूप में के रूप में ज्यादा प्यारा जवाब प्यार करता हूँ, और जब उनकी मासूमियत जवाब और अधिक सुलभ ही कमाल का है कि बनाने में मदद करता है ... लेकिन दिन के अंत में स्टैक ओवरफ़्लो लोगों को शिक्षित करने के बारे में है, और यह प्यारा कहानी है कि नहीं करता है। यहां तक कि डोनट सादृश्य को समझने के लिए आप पहले से ही समझने के लिए OAuth2 काम करता है, लेकिन इस सवाल का जवाब के पूरे मुद्दे ठीक है कि समझाने के लिए होना चाहिए था। कृपया इस (शीर्ष) उत्तर को संपादित करने पर विचार करें, वास्तव में अवधारणाओं को समझाने के लिए, न कि उन्हें केवल अंत में संदर्भ दें ... भले ही वह मजाक या दो की कीमत पर आता हो।
मशीनगॉस्ट

133

मैंने जो पढ़ा है, उसके आधार पर यह सब काम करता है:

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

कुल मिलाकर, OAuth 2 वास्तव में एक बहुत ही सरल सुरक्षा मॉडल है, और एन्क्रिप्शन कभी भी सीधे खेलने में नहीं आता है। इसके बजाय, गुप्त और सुरक्षा टोकन दोनों ही अनिवार्य रूप से पासवर्ड हैं, और पूरी बात केवल https कनेक्शन की सुरक्षा से सुरक्षित है।

OAuth 2 सुरक्षा टोकन या गुप्त की पुनरावृत्ति हमलों के खिलाफ कोई सुरक्षा नहीं है। इसके बजाय, यह इन वस्तुओं के साथ जिम्मेदार जा रहा है और दे नहीं उन्हें बाहर निकलना, और उन पर अधिक https भेजा जा रहा है, जबकि पारगमन में (https URL पैरामीटर की रक्षा करेगा) साइट बी पर पूरी तरह से निर्भर करता है।

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


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

3
ठीक है, @ मौरिसिन, जो समझ में आता है .... लेकिन रीप्ले अटैक सिर्फ ताज़ा टोकन के साथ ही नहीं हो सकता है, क्योंकि प्रत्येक अनुरोध के साथ क्या समाप्त होता है?
श्री मिकेल

15
प्राधिकरण कोड उपयोगकर्ता के माध्यम से पारित किया जाता है, इसलिए (उदाहरण के लिए) को कुकी के रूप में संग्रहीत किया जा सकता है (देखें stackoverflow.com/questions/4065657/… )। ताज़ा टोकन सीधे दो साइटों के बीच से गुजरता है, इसलिए बहुत कम असुरक्षित है।
मौरिस नेफ्तालिन

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

1
इस आरेख में सूचना: tools.ietf.org/html/rfc6749#section-4.1 कि "गुप्त" नहीं दिखाया गया है, केवल क्लाइंट आइडेंटिफ़ायर (प्रश्न में आईडी)। गुप्त क्यों महत्वपूर्ण है और इसे RFC में शामिल क्यों नहीं किया गया है? इसके अलावा सवाल में स्थानीय राज्य भी है जिसे क्लाइंट आईडी (ए) के प्रारंभिक संचरण में पारित करने की सिफारिश की गई है, और XSSF के खिलाफ सुरक्षा के लिए प्राधिकरण कोड के साथ क्लाइंट को पुनर्निर्देशित किया जाता है।
डेविड विलियम्स

104

OAuth एक प्रोटोकॉल है जिसके साथ एक 3-पार्टी ऐप आपके खाते और पासवर्ड के बिना किसी अन्य वेबसाइट में संग्रहीत आपके डेटा तक पहुंच सकता है। अधिक आधिकारिक परिभाषा के लिए, विकी या विनिर्देश को देखें।

यहाँ एक उपयोग मामला डेमो है:

  1. मैं लिंक्डइन पर लॉगिन करता हूं और कुछ दोस्तों को जोड़ना चाहता हूं जो मेरे जीमेल संपर्कों में हैं। लिंक्डइन इसका समर्थन करता है। यह जीमेल से सुरक्षित संसाधन (मेरी जीमेल संपर्क सूची) का अनुरोध करेगा। तो मैं यह बटन क्लिक करता हूं:
    कनेक्शन जोड़ें

  2. एक वेब पेज पॉप अप करता है, और जब मैं अपना खाता और पासवर्ड दर्ज करता हूं, तो यह जीमेल लॉगिन पृष्ठ दिखाता है:
    कनेक्शन जोड़ें

  3. जीमेल तब एक सहमति पृष्ठ दिखाता है जहाँ मैं "स्वीकार" पर क्लिक करता हूँ: कनेक्शन जोड़ें

  4. अब लिंक्डइन मेरे संपर्कों को जीमेल में एक्सेस कर सकता है: कनेक्शन जोड़ें

नीचे दिए गए उदाहरण का फ़्लोचार्ट है:

कनेक्शन जोड़ें

चरण 1: लिंक्डइन जीमेल के प्राधिकरण सर्वर से एक टोकन का अनुरोध करता है।

चरण 2: जीमेल प्राधिकरण सर्वर संसाधन स्वामी को प्रमाणित करता है और उपयोगकर्ता को सहमति पृष्ठ दिखाता है। (यदि वे पहले से लॉग-इन नहीं हैं तो उपयोगकर्ता को Gmail में लॉगिन करने की आवश्यकता है)

चरण 3: उपयोगकर्ता जीमेल डेटा का उपयोग करने के लिए लिंक्डइन के अनुरोध को अनुदान देता है।

चरण 4: जीमेल प्राधिकरण सर्वर एक्सेस टोकन के साथ वापस प्रतिक्रिया करता है।

चरण 5: लिंक्डइन इस एक्सेस टोकन के साथ जीमेल एपीआई को कॉल करता है।

चरण 6: यदि पहुँच टोकन मान्य है, तो जीमेल संसाधन सर्वर आपके संपर्क लौटाता है। (टोकन जीमेल संसाधन सर्वर द्वारा सत्यापित किया जाएगा)

आप OAuth के बारे में अधिक जानकारी यहाँ से प्राप्त कर सकते हैं


आपकी सभी छवियां गायब हो गई हैं। किसी भी मौका आप उन्हें stack.imgur पर लोड कर सकते हैं?
ChrisF

1
यह कैसे सही हो सकता है? क्या यह प्रक्रिया ब्राउजर के सामने बैठे उपयोगकर्ता द्वारा शुरू नहीं की गई है, लिंक्डइन द्वारा नहीं। लेकिन आपके पास चरण 3 के रूप में यह वही है जो मुझे नहीं मिलता है।
मैट

17
सबसे आसान स्पष्टीकरण। धन्यवाद, मैं कभी नहीं डोनट्स फिर से खरीदना करेंगे
OverCoder

4 वें चरण लिंक्डइन एक प्राधिकरण टोकन के साथ लौटता है। यह 5 वीं कदम है, जहां हम एक पहुँच मिल जाएगा में आपूर्ति किया जाना है टोकन और एक ताज़ा टोकन जो संरक्षित संसाधनों के लिए आगे किया जा सकता है।
आवेश

@ रमेश धन्यवाद, आप सही कह रहे हैं, यह ऑथराइजेशन कोड फ्लो है, यहाँ मैंने सिर्फ OAuth 2 के मूल विचार को दिखाने के लिए सरलीकृत तरीके से बताया है
ओवेन काओ

24

चित्र 1, RFC6750 से उठाया गया :

     +--------+                               +---------------+
     |        |--(A)- Authorization Request ->|   Resource    |
     |        |                               |     Owner     |
     |        |<-(B)-- Authorization Grant ---|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(C)-- Authorization Grant -->| Authorization |
     | Client |                               |     Server    |
     |        |<-(D)----- Access Token -------|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(E)----- Access Token ------>|    Resource   |
     |        |                               |     Server    |
     |        |<-(F)--- Protected Resource ---|               |
     +--------+                               +---------------+

13

यह कैसे Oauth 2.0 काम करता है, इस लेख में अच्छी तरह से समझाया गया है

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


क्या आप फेसबुक या अन्य 3 पार्टी का उपयोग नहीं करने के संदर्भ में OAUTH2 का वर्णन कर सकते हैं लेकिन अगर आप वेब की सुरक्षित करने के लिए फोन ऐप के साथ गुप्त कुंजी और TOTP टोकन का उपयोग करते हैं?
अल ग्रांट

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

मैं स्प्रिंगबूट सुरक्षा के साथ स्थापित करने पर विचार कर रहा हूं। क्लाइंट (फोन) और पंजीकरण पर वेबएप एक्सचेंज रहस्य - फिर पासवर्ड के अलावा लॉगिन के दौरान प्रवेश करने के लिए समय / गुप्त आधारित कोड उत्पन्न करने के लिए Google प्रमाणक का उपयोग करें।
अल ग्रांट

क्या मेरी अंतिम टिप्पणी अब आपको बताएगी? Twitter जानकारी के लिए मेरा प्रोफ़ाइल देखें
अल ग्रांट

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

10

यह एक रत्न है:

https://www.digitalocean.com/community/tutorials/an-introduction-to-oauth-2

बहुत संक्षिप्त सारांश:

OAuth चार भूमिकाओं को परिभाषित करता है:

  1. संसाधन स्वामी
  2. ग्राहक
  3. संसाधन सर्वर
  4. प्राधिकरण सर्वर

आपके (रिसोर्स ओनर) के पास एक मोबाइल फोन है। आपके पास कई अलग-अलग ईमेल खाते हैं, लेकिन आप अपने सभी ईमेल खातों को एक ऐप में चाहते हैं, इसलिए आपको स्विच करने की आवश्यकता नहीं है। तो आपका GMail (क्लाइंट) आपके याहू ईमेल (संसाधन सर्वर) तक पहुंच (याहू के प्राधिकरण सर्वर के माध्यम से) के लिए पूछता है ताकि आप अपने ईमेल को जीमेल एप्लिकेशन पर पढ़ सकें।

OAuth मौजूद है क्योंकि यह GMail के लिए आपके Yahoo उपयोगकर्ता नाम और पासवर्ड को स्टोर करने के लिए असुरक्षित है।

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


8

अन्य उत्तर बहुत विस्तृत है और ओपी द्वारा उठाए गए सवालों के थोक को संबोधित करता है।

विस्तृत करने के लिए, और विशेष रूप से ओपी के सवाल को कैसे "OAuth 2 सुरक्षा टोकन का उपयोग करते हुए पुनरावृत्ति के हमलों के खिलाफ चीजों की रक्षा करता है?" को संबोधित करने के लिए, OAuth 2 को लागू करने के लिए आधिकारिक सिफारिशों में दो अतिरिक्त सुरक्षा हैं :

1) टोकन आमतौर पर एक छोटी समाप्ति अवधि ( http://tools.ietf.org/html/rfc6819#section-5.1.5.3 ) होगा:

टोकन के लिए एक छोटा समय समाप्ति समय निम्नलिखित खतरों से सुरक्षा का एक साधन है:

  • पुन: चलाने के ...

2) जब टोकन का उपयोग साइट ए द्वारा किया जाता है, तो सिफारिश की जाती है कि इसे URL पैरामीटर के रूप में प्रस्तुत नहीं किया जाएगा, लेकिन प्राधिकरण अनुरोध शीर्षक फ़ील्ड ( http://tools.ietf.org/html/rfc6750 ) में:

ग्राहक "वाहक" HTTP प्राधिकरण योजना के साथ "प्राधिकरण" अनुरोध शीर्षक फ़ील्ड का उपयोग करके एक वाहक टोकन के साथ प्रमाणित अनुरोध करते हैं। ...

"एप्लिकेशन / x-www-form-urlencoded" विधि SHOULD का उपयोग अनुप्रयोग संदर्भों को छोड़कर नहीं किया जाना चाहिए, जहां भाग लेने वाले ब्राउज़रों के पास "प्राधिकरण" अनुरोध हेडर फ़ील्ड तक पहुंच नहीं है। ...

URI क्वेरी पैरामीटर ... वर्तमान उपयोग दस्तावेज़ में शामिल है; इसकी सुरक्षा कमियों के कारण इसके उपयोग की अनुशंसा नहीं की जाती है


3

यहाँ शायद सबसे सरल विवरण है कि OAuth2 सभी 4 अनुदान प्रकारों के लिए कैसे काम करता है, अर्थात, 4 अलग-अलग प्रवाह जहां ऐप एक्सेस टोकन प्राप्त कर सकता है।

समानता

सभी अनुदान प्रकार के प्रवाह के 2 भाग हैं:

  • पहुंच टोकन प्राप्त करें
  • पहुंच टोकन का उपयोग करें

दूसरा भाग 'उपयोग एक्सेस टोकन' सभी प्रवाह के लिए समान है

अंतर

प्रत्येक अनुदान प्रकार के लिए प्रवाह का पहला भाग 'एक्सेस टोकन प्राप्त करें' भिन्न होता है।

हालांकि, सामान्य तौर पर 'पहुंच टोकन प्राप्त करें' भाग को 5 चरणों में समाहित किया जा सकता है:

  1. क्लाइंट आईडी / गुप्त प्राप्त करने के लिए OAuth प्रदाता, जैसे, ट्विटर, आदि के साथ अपना ऐप (क्लाइंट) प्री-रजिस्टर करें
  2. क्लाइंट आईडी और आवश्यक स्कोप / अनुमतियों के साथ अपने पेज पर एक सामाजिक लॉगिन बटन बनाएं ताकि क्लिक किए गए उपयोगकर्ता को प्रमाणित होने के लिए OAuth प्रदाता पर पुनर्निर्देशित किया जाए
  3. OAuth प्रदाता आपके ऐप (ग्राहक) को अनुमति देने के लिए उपयोगकर्ता से अनुरोध करता है
  4. OAuth प्रदाता कोड जारी करता है
  5. ऐप (क्लाइंट) एक्सेस टोकन प्राप्त करता है

यहां एक पक्ष-दर-चरण आरेख की तुलना की गई है कि 5 चरणों के आधार पर प्रत्येक अनुदान प्रकार का प्रवाह अलग कैसे है।

यह आरेख https://blog.oauth.io/introduction-oauth2-flow-diagrams/ से है

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

प्रत्येक में कार्यान्वयन कठिनाई, सुरक्षा और मामलों का उपयोग करने के विभिन्न स्तर हैं। अपनी आवश्यकताओं और स्थिति के आधार पर, आपको उनमें से एक का उपयोग करना होगा। कौन सा उपयोग करें?

क्लाइंट क्रेडेंशियल : यदि आपका ऐप केवल एक ही उपयोगकर्ता की सेवा कर रहा है

रिसोर्स ओनर पासवर्ड क्रेंशियल : इसका उपयोग केवल अंतिम उपाय के रूप में किया जाना चाहिए क्योंकि उपयोगकर्ता को ऐप को अपनी साख सौंपनी होती है, जिसका अर्थ है कि ऐप वह सब कुछ कर सकता है जो उपयोगकर्ता कर सकता है

प्राधिकरण कोड : उपयोगकर्ता प्राधिकरण प्राप्त करने का सबसे अच्छा तरीका है

इम्प्लिक्ट : अगर आप ऐप मोबाइल या सिंगल-पेज ऐप हैं

यहाँ चुनाव की अधिक व्याख्या है: https://blog.oauth.io/choose-oauth2-flow-grant-types-for-app/

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