यह दस्तावेज़ AI द्वारा अनुवादित किया गया है। किसी भी अशुद्धि के लिए, कृपया अंग्रेजी संस्करण देखें
NocoBase आवश्यकतानुसार उपयोगकर्ता प्रमाणीकरण प्रकारों का विस्तार करने में सहायता करता है। उपयोगकर्ता प्रमाणीकरण के आम तौर पर दो प्रकार होते हैं: पहला, NocoBase एप्लिकेशन के भीतर उपयोगकर्ता की पहचान निर्धारित करना, जैसे पासवर्ड लॉगिन, एसएमएस लॉगिन आदि; और दूसरा, किसी तीसरे पक्ष की सेवा द्वारा उपयोगकर्ता की पहचान निर्धारित करवाना और परिणाम को कॉलबैक के माध्यम से NocoBase एप्लिकेशन को सूचित करना, जैसे OIDC, SAML और अन्य प्रमाणीकरण विधियाँ। NocoBase में इन दो विभिन्न प्रकार की प्रमाणीकरण विधियों की प्रमाणीकरण प्रक्रिया मूल रूप से इस प्रकार है:
api.auth.signIn() को कॉल करता है, auth:signIn लॉगिन इंटरफ़ेस का अनुरोध करता है, और साथ ही वर्तमान में उपयोग किए जा रहे प्रमाणीकरणकर्ता पहचानकर्ता को X-Authenticator रिक्वेस्ट हेडर के माध्यम से बैकएंड तक पहुँचाता है।auth:signIn इंटरफ़ेस रिक्वेस्ट हेडर में प्रमाणीकरणकर्ता पहचानकर्ता के आधार पर संबंधित प्रमाणीकरण प्रकार पर अग्रेषित करता है, और उस प्रमाणीकरण प्रकार की पंजीकृत प्रमाणीकरण क्लास में validate विधि संबंधित तार्किक प्रसंस्करण करती है।auth:signIn इंटरफ़ेस प्रतिक्रिया से उपयोगकर्ता जानकारी और प्रमाणीकरण token प्राप्त करता है, token को लोकल स्टोरेज में सहेजता है, और लॉगिन पूरा करता है। यह चरण SDK द्वारा आंतरिक रूप से स्वचालित रूप से संभाला जाता है।
auth:getAuthUrl) के माध्यम से तीसरे पक्ष का लॉगिन URL प्राप्त करता है, और प्रोटोकॉल के अनुसार एप्लिकेशन नाम, प्रमाणीकरणकर्ता पहचानकर्ता आदि जैसी जानकारी ले जाता है।auth:redirect) को कॉल करती है, प्रमाणीकरण परिणाम लौटाती है, और साथ ही एप्लिकेशन नाम, प्रमाणीकरणकर्ता पहचानकर्ता आदि जैसी जानकारी भी लौटाती है।AuthManager के माध्यम से संबंधित प्रमाणीकरण क्लास प्राप्त करती है, और सक्रिय रूप से auth.signIn() विधि को कॉल करती है। auth.signIn() विधि प्रमाणीकरण तर्क को संभालने के लिए validate() विधि को कॉल करेगी।token प्राप्त करने के बाद, 302 स्टेटस कोड के साथ फ्रंटएंड पेज पर रीडायरेक्ट करती है, और URL पैरामीटर में token और प्रमाणीकरणकर्ता पहचानकर्ता, ?authenticator=xxx&token=yyy ले जाती है।
आगे, हम सर्वर-साइड इंटरफ़ेस और क्लाइंट-साइड उपयोगकर्ता इंटरफ़ेस को कैसे पंजीकृत करें, इस पर चर्चा करेंगे।
NocoBase कर्नेल प्रमाणीकरण प्रकारों के विस्तार के लिए पंजीकरण और प्रबंधन प्रदान करता है। लॉगिन प्लगइन के विस्तार के लिए मुख्य तर्क प्रसंस्करण में कर्नेल की Auth एब्स्ट्रैक्ट क्लास को इनहेरिट करना और संबंधित मानक इंटरफ़ेस को लागू करना शामिल है।
पूर्ण API संदर्भ के लिए Auth देखें।
कर्नेल उपयोगकर्ता प्रमाणीकरण से संबंधित बुनियादी संसाधन ऑपरेशनों को भी पंजीकृत करता है।
| API | विवरण |
|---|---|
auth:check | जाँच करें कि उपयोगकर्ता लॉग इन है या नहीं |
auth:signIn | लॉग इन करें |
auth:signUp | साइन अप करें |
auth:signOut | लॉग आउट करें |
अधिकांश मामलों में, विस्तारित उपयोगकर्ता प्रमाणीकरण प्रकार API तक पहुँचने के लिए उपयोगकर्ता के क्रेडेंशियल उत्पन्न करने हेतु मौजूदा JWT प्रमाणीकरण तर्क का भी उपयोग कर सकते हैं। कर्नेल की BaseAuth क्लास ने Auth एब्स्ट्रैक्ट क्लास का बुनियादी कार्यान्वयन किया है, संदर्भ के लिए BaseAuth देखें। प्लगइन सीधे BaseAuth क्लास को इनहेरिट कर सकते हैं ताकि कुछ लॉजिक कोड का पुन: उपयोग किया जा सके और विकास लागत कम हो सके।
उपयोगकर्ता प्रमाणीकरण तर्क को लागू करते समय, इसमें आमतौर पर उपयोगकर्ता डेटा को संभालना शामिल होता है। NocoBase एप्लिकेशन में, संबंधित संग्रह डिफ़ॉल्ट रूप से इस प्रकार परिभाषित किए गए हैं:
| संग्रह | विवरण | प्लगइन |
|---|---|---|
users | उपयोगकर्ता जानकारी, जैसे ईमेल, उपनाम और पासवर्ड संग्रहीत करें | उपयोगकर्ता प्लगइन (@nocobase/plugin-users) |
authenticators | प्रमाणीकरणकर्ता (प्रमाणीकरण प्रकार इकाई) जानकारी संग्रहीत करें, जो प्रमाणीकरण प्रकार और कॉन्फ़िगरेशन से मेल खाती है | उपयोगकर्ता प्रमाणीकरण प्लगइन (@nocobase/plugin-auth) |
usersAuthenticators | उपयोगकर्ताओं और प्रमाणीकरणकर्ताओं को संबद्ध करता है, संबंधित प्रमाणीकरणकर्ता के तहत उपयोगकर्ता जानकारी सहेजता है | उपयोगकर्ता प्रमाणीकरण प्लगइन (@nocobase/plugin-auth) |
सामान्य तौर पर, विस्तारित लॉगिन विधियाँ संबंधित उपयोगकर्ता डेटा को संग्रहीत करने के लिए users और usersAuthenticators का उपयोग करती हैं। केवल विशेष मामलों में ही आपको स्वयं एक नया संग्रह जोड़ने की आवश्यकता होती है।
usersAuthenticators के मुख्य फ़ील्ड हैं:
| फ़ील्ड | विवरण |
|---|---|
uuid | इस प्रकार के प्रमाणीकरण के लिए उपयोगकर्ता का अद्वितीय पहचानकर्ता, जैसे फ़ोन नंबर या तीसरे पक्ष की सेवा उपयोगकर्ता ID |
meta | JSON फ़ील्ड, सहेजी जाने वाली अन्य जानकारी |
userId | उपयोगकर्ता ID |
authenticator | प्रमाणीकरणकर्ता का नाम (अद्वितीय पहचानकर्ता) |
उपयोगकर्ता क्वेरी और निर्माण ऑपरेशनों के लिए, authenticators का डेटा मॉडल AuthModel भी कई विधियों को समाहित करता है, जिनका उपयोग CustomAuth क्लास में this.authenticator[methodName] के माध्यम से किया जा सकता है। पूर्ण API संदर्भ के लिए AuthModel देखें।
विस्तारित प्रमाणीकरण विधि को प्रमाणीकरण प्रबंधन मॉड्यूल के साथ पंजीकृत करने की आवश्यकता है।
क्लाइंट-साइड उपयोगकर्ता इंटरफ़ेस उपयोगकर्ता प्रमाणीकरण प्लगइन क्लाइंट द्वारा प्रदान किए गए registerType इंटरफ़ेस के माध्यम से पंजीकृत होता है:

यदि प्रमाणीकरण प्रकार से संबंधित कई प्रमाणीकरणकर्ताओं ने लॉगिन फ़ॉर्म पंजीकृत किए हैं, तो उन्हें टैब के रूप में प्रदर्शित किया जाएगा। टैब का शीर्षक बैकएंड में कॉन्फ़िगर किए गए प्रमाणीकरणकर्ता का शीर्षक होगा।


आमतौर पर यह तीसरे पक्ष के लॉगिन बटन होते हैं, लेकिन वास्तव में कोई भी कंपोनेंट हो सकते हैं।

यदि आपको लॉगिन पेज से साइन अप पेज पर जाना है, तो आपको इसे लॉगिन कंपोनेंट में स्वयं संभालना होगा।

ऊपर सामान्य प्रमाणीकरणकर्ता कॉन्फ़िगरेशन है, और नीचे कस्टम कॉन्फ़िगरेशन फ़ॉर्म का वह हिस्सा है जिसे पंजीकृत किया जा सकता है।
क्लाइंट-साइड पर उपयोगकर्ता प्रमाणीकरण से संबंधित API अनुरोध शुरू करने के लिए, आप NocoBase द्वारा प्रदान किए गए SDK का उपयोग कर सकते हैं।
विस्तृत API संदर्भ के लिए @nocobase/sdk - Auth देखें।