OAuth2 का उपयोग करने के लिए मौजूदा विरासत वेबऐप को कैसे स्थानांतरित करें


10

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

मैं अगले 12-18 महीनों में आवेदन को ओवरहॉल कर रहा हूं, मुख्य रूप से यूआई पर ध्यान केंद्रित किया गया है, लेकिन धीरे-धीरे अंतर्निहित भागों को अपग्रेड करना (स्प्रिंग, स्प्रिंग सिक्योरिटी, आदि पर अपग्रेड करना)। इस परियोजना के भीतर, हमने मॉड्यूल-बाय-मॉड्यूल आधार पर यूआई अपग्रेड से निपटने का फैसला किया है; पूरा होने के बाद प्रत्येक मॉड्यूल को उपलब्ध कराना; व्यक्तिगत वेबप में मोनोलिथ को तोड़ने का एक सही अवसर (सभी एक ही UX डिजाइन को बनाए रखते हैं)।

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

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

  1. मेरे सभी उपयोगकर्ता खातों और प्राधिकरण प्रक्रिया को तृतीय पक्ष OAuth2 सर्वर पर माइग्रेट करें
  2. मेरे आवेदन के बाकी हिस्सों से मिलान करें और महसूस करें
  3. तृतीय पक्ष सर्वर के माध्यम से कनेक्ट होने पर "एप्लिकेशन XYZ आपके खाते तक पहुंचने की अनुमति ..." पॉपअप को रोकना चाहेंगे? (उदा: Google OpenID, फेसबुक, आदि)।

मेरा लक्ष्य मौजूदा राज्य से नए राज्य के लिए उपयोगकर्ता के लिए एक सहज संक्रमण प्रदान करना है, लेकिन अलग-अलग वेबऐप बनाने की क्षमता प्रदान करना है जो सभी वेब के बाहर प्रमाणित और अधिकृत करते हैं।


मुझे आश्चर्य है कि यदि कोई एसएसओ पर्याप्त होगा। OAuth डॉन मुझे नहीं लगता कि आपको किस तरह की प्रणाली की आवश्यकता है। CAS
Laiv

जवाबों:


2

प्रकटीकरण : मैं Auth0 पर इंजीनियर हूं ।

यह एक प्रमुख बिंदु पर निर्भर करता है ... आपको यह तय करने की आवश्यकता है कि:

  1. आप निर्माण और / या अपने स्वयं के पहचान प्रदाता और प्राधिकारी सर्वर को बनाए रखने के लिए (और अप्रत्यक्ष रूप से काफी समय खर्च करते हैं) सीधे खर्च करना चाहते हैं
  2. या आप सीधे पैसा खर्च करना पसंद करते हैं और Auth0 जैसे तीसरे पक्ष के प्रमाणीकरण प्रदाता का उपयोग करते हैं।

दोनों विकल्प आपकी कार्यात्मक आवश्यकताओं के दृष्टिकोण से पूरी तरह से व्यवहार्य हैं। कस्टम विकास के साथ आप कार्यक्षमता के पूर्ण नियंत्रण में हैं, इसलिए आप समर्थन करने का निर्णय लेते हैं, इसलिए मैं इस उत्तर पर ध्यान केंद्रित करूंगा कि कैसे Auth0 सूचीबद्ध आवश्यकताओं के अनुरूप हो सकता है

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


किसी मौजूदा उपयोगकर्ता को Auth0 आधारित प्रणाली में माइग्रेट कैसे करें?

आप या तो अपने डेटाबेस का उपयोग करते रहने का निर्णय ले सकते हैं और प्रमाणीकरण से संबंधित सभी प्रोटोकॉल प्रदान करने के लिए Auth0 पर भरोसा कर सकते हैं, जिसका आपको उपयोग करने की आवश्यकता हो सकती है या आप अपने उपयोगकर्ताओं को Auth0 प्रबंधित डेटाबेस में माइग्रेट कर सकते हैं और पासवर्ड को संग्रहीत करने और मान्य करने के बारे में चिंता करना बंद कर सकते हैं।

यदि आप अपने डेटाबेस का उपयोग करते रहना पसंद करते हैं, तो एक कस्टम डेटाबेस का उपयोग करके उपयोगकर्ता नाम और पासवर्ड के साथ उपयोगकर्ता प्रमाणित करें देखें

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

(डॉक्स MySQL को एक उदाहरण के रूप में संदर्भित करते हैं, अन्य डेटाबेस इंजन समर्थित हैं)

दूसरी तरफ, आप माइग्रेट में वर्णित माइग्रेशन प्रक्रिया का लाभ उठाकर उपयोगकर्ता क्रेडेंशियल्स को Auth0 डेटाबेस में मूल रूप से स्थानांतरित कर सकते हैं, Auth0 के लिए माइग्रेट में वर्णित प्रक्रिया

Auth0 कस्टम डेटाबेस कनेक्शन से Auth0 करने के लिए उपयोगकर्ताओं के स्वचालित माइग्रेशन का समर्थन करता है। यह सुविधा आपके उपयोगकर्ताओं को एक लॉग-इन के रूप में एक-एक-बार Auth0 डेटाबेस में जोड़ती है और आपके उपयोगकर्ताओं को एक ही समय में अपने पासवर्ड रीसेट करने के लिए कहने से बचती है।

यदि आप उन सभी के लिए एक साथ हमारे पासवर्ड हैशिंग एल्गोरिथ्म का उपयोग शुरू करना चाहते हैं, तो आप अपने सभी उपयोगकर्ताओं को Auth0 में प्रबंधन API के माध्यम से भी बना सकते हैं। इससे उपयोगकर्ताओं को अपना पासवर्ड रीसेट करने की आवश्यकता होती है।

कस्टम टू-स्टेप ऑथेंटिकेशन (सत्यापन प्रश्नों) का उपयोग कैसे करें?

प्रमाणन द्वारा प्रदान की गई प्रमाणीकरण पाइपलाइन नियमों के उपयोग के माध्यम से पूरी तरह से अनुकूलन योग्य है । इसका मतलब यह है कि भले ही आपको किसी भी प्रोटोकॉल से संबंधित सामान को लागू करने की आवश्यकता नहीं थी, फिर भी आप अपने आवेदन में प्रमाणीकरण कैसे होता है, के छोटे विवरण को ठीक कर सकते हैं।

इसमें दो-चरणीय प्रमाणीकरण प्रक्रिया करने के तरीके के रूप में आपके मौजूदा सत्यापन प्रश्नों का उपयोग जारी रखने की संभावना शामिल है, जहां उपयोगकर्ता Auth0 द्वारा सत्यापित प्रारंभिक पासवर्ड प्रदान करता है और फिर आप उनसे कस्टम नियम से आगे की जानकारी मांगते हैं। (नियम सिर्फ जावास्क्रिप्ट हैं इसलिए संभावनाएं अनंत हैं)

हालाँकि आप सत्यापन प्रश्नों को छोड़ने का निर्णय भी ले सकते हैं और इसके बजाय प्रमाणीकरण प्रक्रिया की सुरक्षा को बढ़ाने के लिए एक तरीके के रूप में Auth0 गार्जियन के साथ जा सकते हैं ।

प्रमाणीकरण UI के रूप और स्वरूप को कैसे अनुकूलित करें?

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

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

स्पष्ट सहमति पृष्ठों को कैसे रोका जाए?

आप प्रमाणीकरण उद्देश्यों के लिए एक पहचान प्रदाता के रूप में और एक OAuth2 प्राधिकरण सर्वर (वर्तमान में केवल यूएस क्षेत्र में उपलब्ध है) के रूप में दोनों का उपयोग कर सकते हैं।

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

OAuth2 में एक सेवा परिदृश्य के रूप में जब सहमति को सक्षम किया जाता है, तो रोड-मैप में कुछ अनुप्रयोगों के लिए सहमति पृष्ठों को बायपास करने की अनुमति शामिल होती है।


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

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

मुझे लगता है कि अपनी खुद की सुरक्षा को रोल करने के साथ यह सबसे बड़ा मुद्दा है, ऐसे मौके होंगे जो शार्टकट लागू करते हैं और शॉर्टकट बनाने के लिए सुरक्षा वास्तव में अच्छा क्षेत्र नहीं है।

यदि आपके पास और प्रश्न हैं तो मुझे बताएं कि क्या आपको लगता है कि मैं सहायक हो सकता हूं।


सभी विवरणों के लिए धन्यवाद। मुझे याद है कि मैं Auth0 को देख रहा हूं, लेकिन जो मैं बता सकता हूं, वह केवल Auth0 क्लाउड है; क्या वो सही है? सुरक्षा और गोपनीयता कारणों से, मैं केवल उन समाधानों को देखने के लिए प्रतिबंधित हूं, जिन्हें मैं अपने स्वयं के डेटासेन्ट / व्यक्तिगत क्लाउड में होस्ट कर सकता हूं। क्या Auth0 उस तरह का विकल्प प्रदान करता है?
एरिक बी।

हाँ, Auth0 परिनियोजन / होस्टिंग के मामले में बहुत लचीला है। गैर-सार्वजनिक क्लाउड समाधान को वर्तमान में Auth0 उपकरण के रूप में जाना जाता है और आप इसे Auth0 के क्लाउड, अपने क्लाउड या अपने स्वयं के डेटा केंद्र के एक समर्पित क्षेत्र में तैनात कर सकते हैं । अधिक जानकारी के लिए उपकरण डॉक्स की जाँच करें । यदि आपको अधिक विस्तृत जानकारी की आवश्यकता है, तो मुझे बताएं, मैं या तो सीधे आपकी मदद करने की कोशिश कर सकता हूं या आपको सही लोगों को इंगित कर सकता हूं।
जोओ एंजेलो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.