सबसे अच्छी प्राधिकरण रणनीति आपके आवेदनों के छोटे या लंबे समय के दायरे पर निर्भर करती है।
निजी लॉगिन के साथ मोनोलिथिक या साधारण वेब
उदाहरण के लिए, यदि आपके पास एक साधारण बैकएंड (एपीआई रेस्ट) या इस तरह के एक मोनोलिथिक एप्लिकेशन के साथ एक साधारण (एमईआरएन) वेब होगा मर्न उदाहरण आपके संगठन में आंतरिक या निजी लॉगिन के साथ, आपकी प्राधिकरण रणनीति उतनी ही सरल हो सकती है:
- (1*) /लॉगिन एक्सप्रेस रूट जो उपयोगकर्ता/पासवर्ड प्राप्त करता है, उन्हें डेटाबेस में मान्य करता है और क्लासिक जेडब्ल्यूटी टोकन और विकल्पों की एक सरणी (प्रतिक्रिया मार्ग) देता है, जिस पर उपयोगकर्ता की पहुंच होनी चाहिए
- वेब ऐप (प्रतिक्रिया) को उन पृष्ठों को प्रस्तुत करना होगा जिनके मार्ग प्राप्त मार्गों से मेल खाते हैं
- वेब ऐप को प्राप्त टोकन को किसी भी एपीआई रेस्ट एंडपॉइंट आमंत्रण पर भेजना होगा
- जब एपीआई प्रतिक्रिया वेब से आमंत्रण प्राप्त करता है, तो उसे शीर्षलेख के रूप में टोकन के अस्तित्व को सत्यापित करना होगा। यदि मौजूद नहीं है, तो 403 त्रुटि लौटानी होगी।
- (2*) यदि टोकन मौजूद है, तो उसे सत्यापित करने का प्रयास करना चाहिए (अच्छी तरह से गठित, समाप्त नहीं हुआ, सही हस्ताक्षर, आदि)।
- (3*)यदि यह एक वैध टोकन है, तो आपको अंतिम सत्यापन करना होगा:क्या "अतिथि" भूमिका वाले उपयोगकर्ता को
DELETE
निष्पादित करने की अनुमति है एक समापन बिंदु पर/user/100
। - (4*) क्लासिक समाधान यह है कि आपके डेटाबेस में कुछ टेबल हों जैसे:उपयोगकर्ता, भूमिकाएं, उपयोगकर्ता_रोल, भूमिका_अनुमति, अनुमति_विकल्प। विकल्प तालिका में आपके सभी एपीआई एंडपॉइंट और इसकी विधि पंजीकृत होनी चाहिए। इसके अलावा इसका उपयोग उपयोगकर्ता <:> वेब मार्गों के बीच संबंध बनाने के लिए किया जा सकता है। इसे जांचें
आधुनिक आवश्यकताएं
आधुनिक और बड़े संगठनों की आवश्यकता है:
- सामाजिक नेटवर्क लॉगिन
- आंतरिक/बाहरी उपयोगकर्ता
- सहभागी लॉगिन नहीं (रोबोट, शेड्यूलर, आदि)
- कई वेब ऐप्स
- कई मोबाइल ऐप्स
- बहुत सारे एपी रेस्ट
इस मामले में, MERN ऐप एक अच्छा विकल्प नहीं है क्योंकि यह ऑल-इन-वन है। पिछली आवश्यकताओं को लागू करने की सामान्य रणनीति कई सर्वरों में कई कलाकृतियों को तैनात करना है:
- वेब ऐप (प्रतिक्रिया, vue, कोणीय, लिंकस्टार्ट, आदि)
- एपिस रेस्ट (नोडज + एक्सप्रेस, जावा, पायथन, आदि)
- प्रमाणीकरण/प्राधिकरण:oauth2 प्लेटफॉर्म/प्रदाता, पहचान/पहुंच प्लेटफॉर्म, आदि
यदि यह आपका मामला है, तो आपको अपने MERN ऐप को कई परिनियोजन योग्य कलाकृतियों में विभाजित करना होगा:वेब, एपीआई और सुरक्षा।
Oauth2
कोई फर्क नहीं पड़ता कि आप केवल लॉगिन के लिए चिंतित हैं या अपने वेब, एपिस और शायद आपके मोबाइल ऐप के लिए प्रमाणीकरण और प्राधिकरण कैसे सुनिश्चित करते हैं, आपको इसकी आवश्यकता होगी:OAUTH2
आप (1*), (2*), (3*) y (4*) को ध्यान में रखते हुए अपना खुद का सुरक्षा मंच विकसित कर सकते हैं या कुछ इस तरह का उपयोग कर सकते हैं:
- auth0
- कीक्लॉक, वगैरह
अधिक विवरण यहां:https://stackoverflow.com/a/62049409
आपके प्रश्न
- आपको कौन सा तरीका बेहतर लगता है?
- मुझे लगता है कि यदि आप auth0 का उपयोग करेंगे, तो आप समय और प्रयास की बचत करेंगे। auth0 के साथ आपको बस एक साधारण एक्सप्रेस ऐप की आवश्यकता होती है, जिसमें कुछ एंडपॉइंट जैसे /login, /callback आदि होते हैं।
- मैं आपको सलाह देता हूं, पासपोर्ट के साथ/बिना auth0 का उपयोग करने से पहले समीक्षा करें कि OAUTH2 प्रवाह कैसे काम करता है। यह लिंक मेरी बहुत मदद की।
- 2 और 3 में क्या अंतर है,
- जैसा कि मैंने पढ़ा, auth0 और अन्य प्लेटफॉर्म उपयोगकर्ता प्रबंधन सेवा प्रदान करते हैं या यह आपकी उपयोगकर्ता सेवा (एडी/एलडीएपी, डेटाबेस, एपीआई, आदि) से जुड़ सकता है। तो
- पासपोर्ट में नियमों को लागू करने का कोई तरीका है (उदाहरण के लिए पहले लॉगिन पर नए उपयोगकर्ताओं को पुनर्निर्देशित करें)
- हाँ। पासपोर्ट के साथ या उसके बिना आपके नोडज में कॉलबैक रीडायरेक्ट होने पर आप कुछ तर्क जोड़ सकते हैं।
- यदि मैं MongoDB के साथ पासपोर्ट लागू करता हूं, और मेरे डेटाबेस में सैकड़ों उपयोगकर्ता हैं, तो मैं उन्हें कैसे प्रबंधित कर सकता हूं?
- आजकल डेटाबेस बहुत सारी पंक्तियों का समर्थन करता है। तो अपने उत्पादन डेटाबेस के लिए इसे अनुकूलित या मॉनिटर करने का प्रयास करें। एक अन्य विकल्प इन कार्यों को करने के लिए एक डेटाबेस व्यवस्थापक को नियुक्त करना है।
संदर्भ
- https://www.digitalocean.com/ समुदाय/ट्यूटोरियल/एक परिचय-से-शपथ-2
- https://auth0.com/user-management
- https://stackoverflow.com/a/62049409
- https://fiware-tutorials.readthedocs. io/en/latest/roles-permissions/index.html
- https://dba. stackexchange.com/questions/36935/best-relational-database-structure-for-this-data
- https://www.mind -it.info/2010/01/09/nist-rbac-data-model/
- अपने स्वयं के वेब अनुप्रयोगों के लिए पासपोर्टजे का उपयोग करने पर सिंगल साइन को प्रबंधित करना - लॉगिन साझा करना
- https://aws.amazon.com/blogs/apn/how-to-integrate-rest-apis-with-single-page-apps-and-secure-them -उपयोग-प्रमाण0-भाग-1/
- पासपोर्ट-फेसबुक का उपयोग करके Facebook OAuth सुरक्षाए>
- एसिंक्रोनस Django, Ajax, Jquery Informationए>
- रिलेशनल मॉडल