OAuth 1.0 प्रोटोकॉल ( RFC 5849 ) की सुरक्षा इस धारणा पर निर्भर करती है कि क्लाइंट एप्लिकेशन में एम्बेडेड एक गुप्त कुंजी को गोपनीय रखा जा सकता है। हालाँकि, धारणा भोली है।
OAuth 2.0 ( RFC 6749 ) में, ऐसे भोले ग्राहक अनुप्रयोग को गोपनीय ग्राहक कहा जाता है । दूसरी ओर, एक क्लाइंट एप्लिकेशन ऐसे वातावरण में जहां गुप्त कुंजी गोपनीय रखना मुश्किल है, एक सार्वजनिक क्लाइंट कहा जाता है । 2.1 देखें । विवरण के लिए ग्राहक प्रकार ।
इस मायने में, OAuth 1.0 केवल गोपनीय ग्राहकों के लिए एक विनिर्देश है।
" OAuth 2.0 और द रोड टू हेल " का कहना है कि OAuth 2.0 कम सुरक्षित है, लेकिन OAuth 1.0 क्लाइंट और OAuth 2.0 गोपनीय क्लाइंट के बीच सुरक्षा स्तर में कोई व्यावहारिक अंतर नहीं है। OAuth 1.0 को हस्ताक्षर की गणना करने की आवश्यकता है, लेकिन यह सुरक्षा को नहीं बढ़ाता है यदि यह पहले से ही आश्वस्त है कि क्लाइंट साइड पर एक गुप्त कुंजी को गोपनीय रखा जा सकता है। कम्प्यूटिंग हस्ताक्षर बिना किसी व्यावहारिक सुरक्षा वृद्धि के केवल एक बोझिल गणना है। मेरा मतलब है कि सादगी की तुलना में एक OAuth 2.0 क्लाइंट टीएलएस पर एक सर्वर से जुड़ता है और बस प्रस्तुत करता है client_id
और client_secret
, यह नहीं कहा जा सकता है कि सुरक्षा के मामले में बोझिल गणना बेहतर है।
इसके अलावा, RFC 5849 (OAuth 1.0) खुले पुनर्निर्देशकों के बारे में कुछ भी उल्लेख नहीं करता है जबकि RFC 6749 (OAuth 2.0) करता है। यही है, oauth_callback
OAuth 1.0 का पैरामीटर एक सुरक्षा छेद बन सकता है।
इसलिए, मुझे नहीं लगता कि OAuth 1.0 OAuth 2.0 की तुलना में अधिक सुरक्षित है।
[१४ अप्रैल २०१६] अपनी बात स्पष्ट करने के लिए जोड़ा गया
OAuth 1.0 सुरक्षा हस्ताक्षर गणना पर निर्भर करती है। एक गुप्त कुंजी का उपयोग करके एक हस्ताक्षर की गणना की जाती है जहां एक गुप्त कुंजी HMAC-SHA1 ( RFC 5849, 3.4.2 ) या RSA-SHA1 ( RFC 5849, 3.4.3 ) के लिए एक निजी कुंजी के लिए एक साझा कुंजी है । जो कोई भी गुप्त कुंजी जानता है, वह हस्ताक्षर की गणना कर सकता है। इसलिए, यदि गुप्त कुंजी से छेड़छाड़ की जाती है, तो हस्ताक्षर गणना की जटिलता अर्थहीन है, लेकिन यह जटिल है।
इसका मतलब यह है कि OAuth 1.0 सुरक्षा जटिलता और हस्ताक्षर की संगणना के तर्क पर निर्भर नहीं है, बल्कि एक गुप्त कुंजी की गोपनीयता पर निर्भर है। दूसरे शब्दों में, OAuth 1.0 सुरक्षा के लिए जो आवश्यक है वह केवल यह शर्त है कि गुप्त कुंजी को गोपनीय रखा जा सकता है। यह चरम लग सकता है, लेकिन यदि स्थिति पहले से ही संतुष्ट है तो हस्ताक्षर गणना में कोई सुरक्षा वृद्धि नहीं होती है।
इसी तरह, OAuth 2.0 गोपनीय क्लाइंट उसी स्थिति पर भरोसा करते हैं। यदि स्थिति पहले से ही संतुष्ट है, तो टीएलएस का उपयोग करके एक सुरक्षित कनेक्शन बनाने और सुरक्षित कनेक्शन के माध्यम से भेजने client_id
और client_secret
प्राधिकरण सर्वर में कोई समस्या है ? क्या OAuth 1.0 और OAuth 2.0 गोपनीय ग्राहकों के बीच सुरक्षा स्तर में कोई बड़ा अंतर है अगर दोनों एक ही स्थिति पर भरोसा करते हैं?
मुझे OAuth 1.0 के लिए OAuth 2.0 को दोष देने का कोई अच्छा कारण नहीं मिल रहा है। तथ्य यह है कि (1) OAuth 1.0 केवल गोपनीय ग्राहकों के लिए एक विनिर्देश है और (2) OAuth 2.0 ने गोपनीय क्लाइंट और समर्थित सार्वजनिक ग्राहकों के लिए भी प्रोटोकॉल को सरल बनाया है। भले ही यह अच्छी तरह से जाना जाता है या नहीं, स्मार्टफोन अनुप्रयोगों को सार्वजनिक ग्राहकों ( आरएफसी 6749, 9 ) के रूप में वर्गीकृत किया जाता है , जो OAuth 2.0 से लाभान्वित होते हैं।