“रिफ्रेश टोकन” का उद्देश्य क्या है?


110

मेरा एक कार्यक्रम है जो YouTube लाइव स्ट्रीमिंग एपीआई के साथ एकीकृत है। यह टाइमर पर चलता है, इसलिए मेरे लिए रेफरी टोकन के साथ हर 50 मिनट में एक नया एक्सेस टोकन लाने के लिए कार्यक्रम करना अपेक्षाकृत आसान है। मेरा सवाल है, क्यों?

जब मैंने YouTube के साथ प्रमाणीकरण किया, तो इसने मुझे एक रीफ़्रेश टोकन दिया। फिर मैं एक घंटे के बारे में एक बार एक नया एक्सेस टोकन प्राप्त करने के लिए इस ताज़ा टोकन का उपयोग करता हूं। अगर मेरे पास टोकन रीफ़्रेश है, तो मैं नया एक्सेस टोकन प्राप्त करने के लिए इसका उपयोग कर सकता हूं, क्योंकि यह कभी भी समाप्त नहीं होता है। इसलिए मैं नहीं देखता कि यह कैसे मुझे शुरू से ही एक एक्सेस टोकन देने की तुलना में अधिक सुरक्षित है और पूरे रिफ्रेश टोकन सिस्टम के साथ परेशान नहीं करता है।



3
प्रवेश टोकन बियरर टोकन हैं। मतलब किसी अन्य पहचान की आवश्यकता नहीं है, और पहुँच टोकन वह सब है जो आपको प्रतिरूपित करने के लिए आवश्यक है। इस वजह से, उन्हें हमेशा अल्पकालिक रहना चाहिए। दूसरी ओर ताज़ा टोकन बियर के टोकन नहीं हैं । जब आप एक नया एक्सेस टोकन पाने के लिए YouTube पर एक ताज़ा टोकन भेजते हैं, तो आपको एक client_id और client_secret भी भेजना होगा। इस वजह से, ताज़ा टोकन अधिक समय तक जीवित रह सकता है क्योंकि यह बहुत कम संभावना है कि ताज़ा टोकन और ग्राहक_सेक्रेट दोनों में समझौता किया जाएगा।
जहाराली

जवाबों:


96

मूल रूप से, ताज़ा टोकन का उपयोग नए एक्सेस टोकन प्राप्त करने के लिए किया जाता है।

इन दोनों टोकनों को स्पष्ट रूप से अलग करने और मिश्रित होने से बचने के लिए, यहाँ OAuth 2.0 प्राधिकरण फ्रेमवर्क में दिए गए कार्य हैं :

  • संसाधन स्वामी के अनुमोदन से एक प्राधिकरण सर्वर द्वारा तीसरे पक्ष के ग्राहकों के लिए पहुंच टोकन जारी किए जाते हैं। क्लाइंट संसाधन सर्वर द्वारा होस्ट किए गए संरक्षित संसाधनों तक पहुंचने के लिए एक्सेस टोकन का उपयोग करता है।
  • ताज़ा टोकन क्रेडेंशियल का उपयोग एक्सेस टोकन प्राप्त करने के लिए किया जाता है। रिफ्रेश टोकन क्लाइंट को प्राधिकरण सर्वर द्वारा जारी किए जाते हैं और इसका उपयोग एक नया एक्सेस टोकन प्राप्त करने के लिए किया जाता है जब वर्तमान एक्सेस टोकन अमान्य हो जाता है या समाप्त हो जाता है, या समान या संकरा गुंजाइश के साथ अतिरिक्त एक्सेस टोकन प्राप्त करने के लिए।

अब, क्यों आप अभी भी एक ताज़ा सिर्फ एक पहुँच टोकन हासिल करने के बजाय टोकन जारी किए जा रहे थे पर आपके सवाल का जवाब देने के लिए, मुख्य में इंटरनेट इंजीनियरिंग टास्क फोर्स द्वारा प्रदान कारण ताज़ा टोकन है:

एक सुरक्षा कारण है, refresh_tokenकेवल प्राधिकरण सर्वर के साथ आदान-प्रदान किया जाता है जबकि access_tokenसंसाधन सर्वर के साथ आदान-प्रदान किया जाता है। यह एक लंबे समय तक रहने वाले access_token के जोखिम को कम करता है "एक घंटे के लिए एक अच्छा टोकन पहुंचता है, एक साल के लिए ताज़ा टोकन के साथ या अच्छे-से-उलट" बनाम "एक ताज़ा टोकन के बिना एक अच्छा टोकन-उलटा पहुँचता है" टोकन। "

OAuth 2.0 फ्लो की अधिक विस्तृत और संपूर्ण जानकारी के लिए, कृपया निम्नलिखित संदर्भ देखें:


5
क्या ताज़ा टोकन भी नए ताज़ा टोकन पाने में मदद करना चाहिए?
घूमर

6
जब यह समाप्त हो रहा है तो सिर्फ एक नया अल्पकालिक access_token क्यों न प्राप्त करें? अगर आपको किसी नए access_token के लिए वैसे भी सर्वर से अनुरोध करने की आवश्यकता है, तो लंबे समय तक ताज़ा रहते हैं। या क्या यह सच है कि एक ताज़ा_टोकन के साथ मुझे जीवित पहचान प्रदाता कुकी को बनाए रखने की आवश्यकता नहीं है और यह कुकी के लंबे समय तक चले जाने के बाद भी ताज़ा_token के आधार पर नए access_tokens को जारी करता है और उपयोगकर्ता को अपनी विश्वसनीयता दर्ज करनी होगी यदि वे एक प्राप्त करना चाहते थे new access_token?
जस्टमार्टिन

2
@JustAMartin एक OAuth2 क्लाइंट के रूप में, एक ताज़ा टोकन के बिना, मुझे एक और एक्सेस टोकन प्राप्त करने के लिए पूरे प्राधिकरण प्रवाह को फिर से शुरू करना होगा (उपयोगकर्ता को 'लॉगिन' करने और मुझे फिर से अनुमति देने के लिए)। रीफ़्रेश टोकन को इस आवश्यकता को 'प्रूफ' के एक प्रकार के रूप में बायपास किया जाता है, जिसे मैं, क्लाइंट के रूप में, एक्सेस टोकन का अनुरोध करने के लिए पहले ही उपयोगकर्ता की अनुमति प्राप्त कर चुका हूं।
जहाराली

क्या एक ताज़ा टोकन एक्सेस टोकन के समान या समान डेटा हो सकता है? चूंकि ताज़ा टोकन का प्रमुख उपयोग उपयोगकर्ता के अनुभव को कम करना और हैकर्स के पहुंच के समय को संसाधन तक सीमित करना है।
डेविसबोबी एलेक्स

10

@Teyam ने SO पोस्ट का उल्लेख किया है कि OAuth v2 के पास एक्सेस और रिफ्रेश टोकन दोनों क्यों हैं? लेकिन मैं वहां एक और जवाब पसंद करता हूं: https://stackoverflow.com/a/12885823/254109

TL, DR refresh_token बढ़ी हुई सुरक्षा नहीं लाता है। यह स्केलेबिलिटी और प्रदर्शन में सुधार लाने के उद्देश्य से है। फिर, access_tokenबस कुछ तेज, अस्थायी भंडारण (जैसे मेमोरी) में संग्रहीत किया जा सकता है। यह प्राधिकरण और संसाधन सर्वर को अलग करने की भी अनुमति देता है।


3
इसके अलावा एक सुरक्षा कारण है, जैसा @Teyam द्वारा उल्लेख किया गया है: "ताज़ा_टोकेन केवल प्राधिकरण सर्वर के साथ आदान-प्रदान किया जाता है, जबकि access_token का संसाधन सर्वरों के साथ आदान-प्रदान किया जाता है"
huyz

2
यह केवल तभी अधिक सुरक्षित है जब हम मान लेते हैं कि प्राधिकरण सर्वर किसी तरह संसाधन सर्वर के रूप में बेहतर है। यदि यह ऐसा नहीं है तो यह वास्तव में कम सुरक्षित है। यह ताज़ा टोकन से समझौता किया गया है मैं बस इसका उपयोग कर सकता हूं ताकि एक नया एक्सेस टोकन प्राप्त कर सके।
Arno van Lieshout

TL, डॉ। ?? सच्ची में ?
बुध हो

10

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

उपयोगकर्ता को कष्टप्रद नहीं करने के लिए एक साधन के रूप में ताज़ा करें

एक उदाहरण के साथ पहले उद्देश्य के बारे में बात करते हैं। मान लीजिए, एक उपयोगकर्ता, एक तृतीय पक्ष क्लाइंट वेब एप्लिकेशन का उपयोग कर रहा था, जो आपके YouTube खाते के डेटा के साथ सहभागिता करना चाहता था। एक बार जब आप अपने YouTube डेटा का उपयोग करने के लिए क्लाइंट एप्लिकेशन को अनुमति प्रदान करते हैं, तो क्या आप चाहते हैं कि क्लाइंट ऐप आपको फिर से आपकी अनुमति के लिए संकेत देजब इसका YouTube टोकन समाप्त हो गया? यदि YouTube टोकन समाप्ति समय बहुत कम था, तो 5 मिनट की तरह क्या होता है। यह कम से कम हर 5 मिनट में आपकी अनुमति के लिए मुवक्किल को परेशान करने पर आपको थोड़ा परेशान करेगा! OAuth2 ने इस 'समस्या' का जो प्रस्ताव रखा है, वह ताज़ा है। ताज़ा टोकन का उपयोग करके, एक्सेस टोकन अल्पकालिक रह सकता है (जो कि एक्सेस के लीक होने या किसी तरह चोरी हो जाने की स्थिति में वांछनीय है), और ताज़ा टोकन लंबे समय तक (एर) -lived रह सकता है, जिससे क्लाइंट को एक नया एक्सेस मिल सकेगा टोकन जब उपयोगकर्ता की अनुमति (फिर से) की आवश्यकता के बिना समाप्त हो जाता है।

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

टोकन को सुरक्षा बढ़ाने के साधन के रूप में ताज़ा करें

हालांकि, यह सवाल उठाता है, "ठीक है, अगर ताज़ा टोकन लीक हो जाता है या चोरी हो जाता है, या केवल एक दुर्भावनापूर्ण क्लाइंट एप्लिकेशन द्वारा रखा जाता है तो क्या होता है जो उपयोगकर्ता के अनुरोध पर इसे छुटकारा नहीं देता? क्या हमलावर अभी जारी नहीं रह सकता है?" अनिश्चित काल तक (या जब तक यह समाप्त नहीं हो जाता) तक एक वैध पहुँच टोकन प्राप्त करने के लिए ताज़ा टोकन का उपयोग करें; यह प्रश्न उस दूसरे उद्देश्य पर चर्चा करने की ओर ले जाता है जिसका मैंने उल्लेख किया था, ताज़ा टोकन का अधिक सुरक्षित प्रवाह में योगदान।

टोकन तक पहुँच के साथ जो समस्या उत्पन्न होती है, वह यह है कि एक बार अधिग्रहित करने के बाद, वे केवल संसाधन सर्वर (उदाहरण के लिए YouTube) के लिए प्रस्तुत किए जाते हैं। इसलिए यदि एक्सेस टोकन चुराया या समझौता किया गया है, तो आप संसाधन सर्वर को उस टोकन पर भरोसा नहीं करने के लिए कैसे कहेंगे? ठीक है, तुम सच में नहीं कर सकते। इसे करने का एकमात्र तरीका प्राधिकरण सर्वर पर निजी हस्ताक्षर कुंजी को बदलना होगा (पहली जगह में टोकन पर हस्ताक्षर करने वाली कुंजी)। मुझे लगता है कि यह करने के लिए असुविधाजनक है, और कुछ मामलों में (जैसे Auth0), समर्थित नहीं है।

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


9

"तो मैं नहीं देखता कि यह कैसे मुझे शुरू से ही एक एक्सेस टोकन देने की तुलना में अधिक सुरक्षित है और पूरे रिफ्रेश टोकन सिस्टम से परेशान नहीं है।" मैं उसी सवाल से जूझता रहा। संक्षिप्त उत्तर यह है कि क्रेडेंशियल्स की समय सीमा समाप्त नहीं हुई है, यह आश्वस्त करने के लिए ताज़ा टोकन आवश्यक है।

एक उदाहरण मदद कर सकता है: मेरे पास एक डेटाबेस है जो आपके मेडिकल रिकॉर्ड को संग्रहीत करता है। आप अपने जीवनसाथी के साथ अपने मेडिकल रिकॉर्ड को साझा करने के लिए सहमति देते हैं। आपका पति मेरे डेटाबेस से आपके रिकॉर्ड को पढ़ने के लिए उनके एक्सेस टोकन का उपयोग करता है। अब से दो सप्ताह बाद आपका पति आपके मेडिकल रिकॉर्ड पर दोबारा जाँच करता है और ताज़ा टोकन का उपयोग यह सुनिश्चित करने के लिए किया जाता है कि आपके रिकॉर्ड को देखने के लिए उनके पास अभी भी अनुमति है (प्रमाणीकरण सर्वर से)। ताज़ा टोकन आपके पति / पत्नी को प्रमाणीकरण सर्वर पर अपनी साख (उपयोगकर्ता नाम और पासवर्ड) दर्ज करने की आवश्यकता को दरकिनार कर देता है, लेकिन यह सुनिश्चित करता है कि उनके पास संसाधन तक पहुंचने की वैधता अभी भी है। एक्सेस टोकन को समाप्त करने वाला कभी नहीं जानता होगा कि आपने अपने मेडिकल रिकॉर्ड तक पहुंचने के लिए अपने पति के अधिकारों को रद्द कर दिया है या नहीं।

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