ruby on rails - OAuth पासवर्ड प्रमाणन का उपयोग करने के लाभ टोकन पहुंच प्रमाणीकरण पर अनुदान




ruby-on-rails authentication (2)

मैं रेल 5 का उपयोग कर मोबाइल एप्लिकेशन के लिए एक एपीआई बना रहा हूं। फिलहाल, मुझे तीन-पैर प्राधिकरण की आवश्यकता नहीं है, क्योंकि एपीआई का उपयोग केवल हमारे अपने मोबाइल एप्लिकेशन द्वारा किया जाएगा।

मैं इन दो विकल्पों में से एक को चुनने की सोच रहा हूं:

  1. द्वारपाल + भक्ति: मैं द्वारपाल का उपयोग करते हुए ओअथ 2.0 को लागू कर सकता हूं, लेकिन मैं कम से कम अब तक पासवर्ड क्रेडेंशियल अनुदान का उपयोग कर रहा हूं।
  2. Rails 'अपने ActionController::HttpAuthentication::Token मॉड्यूल + Devise : यह जाने के लिए आसान तरीका की तरह लगता है

ईमानदारी से, मैं टोकन एक्सेस प्रमाणीकरण विधि और OAuth 2.0 के पासवर्ड प्रमाणन अनुदान के बीच अंतर नहीं देख सकता।

एक दूसरे पर एक कैसे चुनना होगा? क्या कोई अन्य विकल्प है जिसे विचार करना चाहिए?


यदि आपके पास कभी भी होगा तो "एकल प्रयोजन API" (केवल मोबाइल एप्लिकेशन के लिए), सुरक्षा के मामले में कोई बड़ा अंतर नहीं है।

लेकिन अगर आप बाहरी सेवाओं द्वारा उपयोग करने के लिए इस एपीआई का विस्तार करना चाहते हैं, तो, आप द्वारपाल के उपयोग से कार्यान्वित OAuth 2.0 के साथ एक बेहतर स्थिति में होंगे, क्योंकि आप आसानी से कॉन्फ़िगर कर सकते हैं, उदाहरण के लिए, एक प्राधिकरण कोड अनुदान उन्हें। इसलिए, मैं कहूंगा कि "द्वारपाल + भला करना" विकल्प अधिक भविष्य-सबूत है, क्योंकि यह अधिक विकल्प प्रदान करता है, जबकि कार्यान्वयन के लिए HTTP टोकन प्रमाणीकरण बहुत सरल है


दोनों अवधारणात्मक रूप से भिन्न चीजें हैं:

  • "टोकन पहुंच प्रमाणीकरण" एक प्रोटोकॉल का वर्णन करता है जिसमें सर्वर ( सुरक्षित रूप से लंबे समय तक) टोकन सुरक्षित रूप से प्रस्तुत किया जाना चाहिए। यह कुछ नहीं बताता है कि टोकन कहाँ से आया है या इसका अर्थ कैसे किया जाना चाहिए।
  • "पासवर्ड क्रेडेंशियल्स अनुदान" पूर्णतः विकसित ओएथ प्रवाह का एक हिस्सा है, जो एक (आमतौर पर अल्पावधि) टोकन प्राप्त करने के साधनों का वर्णन करता है।

एक अर्थ में, आप OAuth का उपयोग करके टोकन प्राप्त करने के लिए पासवर्ड क्रेडेंशियल्स ग्रान्ट का उपयोग कर सकते हैं और फिर पहुंच प्राप्त करने के लिए Token प्राधिकरण हेडर में इस टोकन का उपयोग कर सकते हैं।

प्रश्न तब बन जाता है - यह (अस्थायी) टोकन के लिए (स्थायी और गुप्त) क्रेडेंशियल्स का आदान-प्रदान करने के लिए अतिरिक्त गोलटिप्राप करना उपयोगी है, जब हम इसके बजाय ऐप में संग्रहीत (स्थायी और गुप्त) टोकन का उपयोग तुरंत वैसे भी अधिकृत कर सकते हैं।

जैसे कि मैं इसे देखता हूं, पूर्ण OAuth प्रवाह का उपयोग करने के दो संभावित लाभ होते हैं I सबसे पहले, यह आपको स्वाभाविक रूप से तृतीय पक्षों के लिए प्राधिकरण के अन्य तरीकों को जोड़ने देता है दूसरे, यह आपको किसी भी समय टोकन को रद्द करने देता है और इन पहलुओं का आविष्कार किए बिना इन अन्य तरीकों का उपयोग करने के लिए पुन: प्राधिकरण (यदि आप उन्हें लागू कर लेते हैं) को मजबूर करते हैं।

दूसरी ओर, जब आप आवश्यक होते हैं, तब आप बाद में किसी अतिरिक्त "टोकन पीढ़ी" वाले हिस्से को जोड़ सकते हैं इस प्रकार, यदि आपकी वर्तमान योजना कोड में कड़ी मेहनत के क्रेडेंशियल्स के लिए है, तो मुझे संदेह था कि आप Token प्राधिकरण पर भरोसा कर सकते हैं।

केवल यह एक अनुरोध छोटा नहीं है, यह Bearer उपयोग किए जाने वाले Bearer प्रमाणीकरण की तुलना में थोड़ा अधिक सुरक्षित भी हो सकता है: यदि कोई हमलावर ने एक Bearer टोकन को सांस ले लिया है, तो वे आम तौर पर सर्वर तक पूर्ण टोकन पहुंच प्राप्त करेंगे जब तक इसकी समाप्ति नहीं होती है। यह Token टोकन (सामान्य रूप से) के साथ नहीं है। ऐसा नहीं है कि यह सब बहुत अधिक मायने रखता है यदि हमलावर आपके ऐप से साझा रहस्य को किसी भी तरह से निकाल सकता है।







rails-api