logologo
शुरू करें
मार्गदर्शिका
विकास
प्लगइन
API
English
简体中文
日本語
한국어
Deutsch
Français
Español
Português
Русский
Italiano
Türkçe
Українська
Tiếng Việt
Bahasa Indonesia
ไทย
Polski
Nederlands
Čeština
العربية
עברית
हिन्दी
Svenska
शुरू करें
मार्गदर्शिका
विकास
प्लगइन
API
logologo

उपयोगकर्ता प्रमाणीकरण

अवलोकन
ऑथेंटिकेटर प्रबंधन

प्रमाणीकरण प्रकार

पासवर्ड
SMS

OIDC

कॉन्फ़िगरेशन

उदाहरण

Google लॉगिन
Microsoft लॉगिन

SAML

कॉन्फ़िगरेशन

उदाहरण

Google लॉगिन
LDAP
CAS
वीकॉम
DingTalk
API कुंजी

विकास गाइड

विस्तारित प्रमाणीकरण प्रकार
API संदर्भ

सत्यापन

अवलोकन

सत्यापन प्रकार

SMS
TOTP ऑथेंटिकेटर

विकास गाइड

विस्तारित सत्यापन प्रकार
विस्तारित सत्यापन परिदृश्य
विस्तारित SMS सेवा प्रदाता
API संदर्भ
टू-फ़ैक्टर ऑथेंटिकेशन (2FA)
Next Pageअवलोकन
TIP

यह दस्तावेज़ AI द्वारा अनुवादित किया गया है। किसी भी अशुद्धि के लिए, कृपया अंग्रेजी संस्करण देखें

#प्रमाणीकरण प्रकार का विस्तार करें

#अवलोकन

NocoBase आवश्यकतानुसार उपयोगकर्ता प्रमाणीकरण प्रकारों का विस्तार करने में सहायता करता है। उपयोगकर्ता प्रमाणीकरण के आम तौर पर दो प्रकार होते हैं: पहला, NocoBase एप्लिकेशन के भीतर उपयोगकर्ता की पहचान निर्धारित करना, जैसे पासवर्ड लॉगिन, एसएमएस लॉगिन आदि; और दूसरा, किसी तीसरे पक्ष की सेवा द्वारा उपयोगकर्ता की पहचान निर्धारित करवाना और परिणाम को कॉलबैक के माध्यम से NocoBase एप्लिकेशन को सूचित करना, जैसे OIDC, SAML और अन्य प्रमाणीकरण विधियाँ। NocoBase में इन दो विभिन्न प्रकार की प्रमाणीकरण विधियों की प्रमाणीकरण प्रक्रिया मूल रूप से इस प्रकार है:

#तीसरे पक्ष के कॉलबैक की आवश्यकता नहीं है

  1. क्लाइंट NocoBase SDK का उपयोग करके लॉगिन इंटरफ़ेस api.auth.signIn() को कॉल करता है, auth:signIn लॉगिन इंटरफ़ेस का अनुरोध करता है, और साथ ही वर्तमान में उपयोग किए जा रहे प्रमाणीकरणकर्ता पहचानकर्ता को X-Authenticator रिक्वेस्ट हेडर के माध्यम से बैकएंड तक पहुँचाता है।
  2. auth:signIn इंटरफ़ेस रिक्वेस्ट हेडर में प्रमाणीकरणकर्ता पहचानकर्ता के आधार पर संबंधित प्रमाणीकरण प्रकार पर अग्रेषित करता है, और उस प्रमाणीकरण प्रकार की पंजीकृत प्रमाणीकरण क्लास में validate विधि संबंधित तार्किक प्रसंस्करण करती है।
  3. क्लाइंट auth:signIn इंटरफ़ेस प्रतिक्रिया से उपयोगकर्ता जानकारी और प्रमाणीकरण token प्राप्त करता है, token को लोकल स्टोरेज में सहेजता है, और लॉगिन पूरा करता है। यह चरण SDK द्वारा आंतरिक रूप से स्वचालित रूप से संभाला जाता है।

#तीसरे पक्ष के कॉलबैक पर निर्भर

  1. क्लाइंट अपने स्वयं के पंजीकृत इंटरफ़ेस (जैसे auth:getAuthUrl) के माध्यम से तीसरे पक्ष का लॉगिन URL प्राप्त करता है, और प्रोटोकॉल के अनुसार एप्लिकेशन नाम, प्रमाणीकरणकर्ता पहचानकर्ता आदि जैसी जानकारी ले जाता है।
  2. लॉगिन पूरा करने के लिए तीसरे पक्ष के URL पर रीडायरेक्ट करें। तीसरे पक्ष की सेवा NocoBase एप्लिकेशन के कॉलबैक इंटरफ़ेस (जिसे स्वयं पंजीकृत करने की आवश्यकता है, जैसे auth:redirect) को कॉल करती है, प्रमाणीकरण परिणाम लौटाती है, और साथ ही एप्लिकेशन नाम, प्रमाणीकरणकर्ता पहचानकर्ता आदि जैसी जानकारी भी लौटाती है।
  3. कॉलबैक इंटरफ़ेस विधि, प्रमाणीकरणकर्ता पहचानकर्ता प्राप्त करने के लिए पैरामीटर को पार्स करती है, AuthManager के माध्यम से संबंधित प्रमाणीकरण क्लास प्राप्त करती है, और सक्रिय रूप से auth.signIn() विधि को कॉल करती है। auth.signIn() विधि प्रमाणीकरण तर्क को संभालने के लिए validate() विधि को कॉल करेगी।
  4. कॉलबैक विधि प्रमाणीकरण token प्राप्त करने के बाद, 302 स्टेटस कोड के साथ फ्रंटएंड पेज पर रीडायरेक्ट करती है, और URL पैरामीटर में token और प्रमाणीकरणकर्ता पहचानकर्ता, ?authenticator=xxx&token=yyy ले जाती है।

आगे, हम सर्वर-साइड इंटरफ़ेस और क्लाइंट-साइड उपयोगकर्ता इंटरफ़ेस को कैसे पंजीकृत करें, इस पर चर्चा करेंगे।

#सर्वर-साइड

#प्रमाणीकरण इंटरफ़ेस

NocoBase कर्नेल प्रमाणीकरण प्रकारों के विस्तार के लिए पंजीकरण और प्रबंधन प्रदान करता है। लॉगिन प्लगइन के विस्तार के लिए मुख्य तर्क प्रसंस्करण में कर्नेल की Auth एब्स्ट्रैक्ट क्लास को इनहेरिट करना और संबंधित मानक इंटरफ़ेस को लागू करना शामिल है। पूर्ण API संदर्भ के लिए Auth देखें।

import { Auth } from '@nocobase/auth';

class CustomAuth extends Auth {
  set user(user) {}
  get user() {}

  async check() {}
  async signIn() {}
}

कर्नेल उपयोगकर्ता प्रमाणीकरण से संबंधित बुनियादी संसाधन ऑपरेशनों को भी पंजीकृत करता है।

APIविवरण
auth:checkजाँच करें कि उपयोगकर्ता लॉग इन है या नहीं
auth:signInलॉग इन करें
auth:signUpसाइन अप करें
auth:signOutलॉग आउट करें

अधिकांश मामलों में, विस्तारित उपयोगकर्ता प्रमाणीकरण प्रकार API तक पहुँचने के लिए उपयोगकर्ता के क्रेडेंशियल उत्पन्न करने हेतु मौजूदा JWT प्रमाणीकरण तर्क का भी उपयोग कर सकते हैं। कर्नेल की BaseAuth क्लास ने Auth एब्स्ट्रैक्ट क्लास का बुनियादी कार्यान्वयन किया है, संदर्भ के लिए BaseAuth देखें। प्लगइन सीधे BaseAuth क्लास को इनहेरिट कर सकते हैं ताकि कुछ लॉजिक कोड का पुन: उपयोग किया जा सके और विकास लागत कम हो सके।

import { BaseAuth } from '@nocobase/auth';

class CustomAuth extends BaseAuth {
  constructor(config: AuthConfig) {
    // उपयोगकर्ता संग्रह सेट करें
    const userCollection = config.ctx.db.getCollection('users');
    super({ ...config, userCollection });
  }

  // उपयोगकर्ता प्रमाणीकरण तर्क लागू करें
  async validate() {}
}

#उपयोगकर्ता डेटा

उपयोगकर्ता प्रमाणीकरण तर्क को लागू करते समय, इसमें आमतौर पर उपयोगकर्ता डेटा को संभालना शामिल होता है। NocoBase एप्लिकेशन में, संबंधित संग्रह डिफ़ॉल्ट रूप से इस प्रकार परिभाषित किए गए हैं:

संग्रहविवरणप्लगइन
usersउपयोगकर्ता जानकारी, जैसे ईमेल, उपनाम और पासवर्ड संग्रहीत करेंउपयोगकर्ता प्लगइन (@nocobase/plugin-users)
authenticatorsप्रमाणीकरणकर्ता (प्रमाणीकरण प्रकार इकाई) जानकारी संग्रहीत करें, जो प्रमाणीकरण प्रकार और कॉन्फ़िगरेशन से मेल खाती हैउपयोगकर्ता प्रमाणीकरण प्लगइन (@nocobase/plugin-auth)
usersAuthenticatorsउपयोगकर्ताओं और प्रमाणीकरणकर्ताओं को संबद्ध करता है, संबंधित प्रमाणीकरणकर्ता के तहत उपयोगकर्ता जानकारी सहेजता हैउपयोगकर्ता प्रमाणीकरण प्लगइन (@nocobase/plugin-auth)

सामान्य तौर पर, विस्तारित लॉगिन विधियाँ संबंधित उपयोगकर्ता डेटा को संग्रहीत करने के लिए users और usersAuthenticators का उपयोग करती हैं। केवल विशेष मामलों में ही आपको स्वयं एक नया संग्रह जोड़ने की आवश्यकता होती है।

usersAuthenticators के मुख्य फ़ील्ड हैं:

फ़ील्डविवरण
uuidइस प्रकार के प्रमाणीकरण के लिए उपयोगकर्ता का अद्वितीय पहचानकर्ता, जैसे फ़ोन नंबर या तीसरे पक्ष की सेवा उपयोगकर्ता ID
metaJSON फ़ील्ड, सहेजी जाने वाली अन्य जानकारी
userIdउपयोगकर्ता ID
authenticatorप्रमाणीकरणकर्ता का नाम (अद्वितीय पहचानकर्ता)

उपयोगकर्ता क्वेरी और निर्माण ऑपरेशनों के लिए, authenticators का डेटा मॉडल AuthModel भी कई विधियों को समाहित करता है, जिनका उपयोग CustomAuth क्लास में this.authenticator[methodName] के माध्यम से किया जा सकता है। पूर्ण API संदर्भ के लिए AuthModel देखें।

import { AuthModel } from '@nocobase/plugin-auth';

class CustomAuth extends BaseAuth {
  async validate() {
    // ...
    const authenticator = this.authenticator as AuthModel;
    this.authenticator.findUser(); // उपयोगकर्ता क्वेरी करें
    this.authenticator.newUser(); // नया उपयोगकर्ता बनाएँ
    this.authenticator.findOrCreateUser(); // उपयोगकर्ता क्वेरी करें या नया बनाएँ
    // ...
  }
}

#प्रमाणीकरण प्रकार पंजीकरण

विस्तारित प्रमाणीकरण विधि को प्रमाणीकरण प्रबंधन मॉड्यूल के साथ पंजीकृत करने की आवश्यकता है।

class CustomAuthPlugin extends Plugin {
  async load() {
    this.app.authManager.registerTypes('custom-auth-type', {
      auth: CustomAuth,
    });
  }
}

#क्लाइंट-साइड

क्लाइंट-साइड उपयोगकर्ता इंटरफ़ेस उपयोगकर्ता प्रमाणीकरण प्लगइन क्लाइंट द्वारा प्रदान किए गए registerType इंटरफ़ेस के माध्यम से पंजीकृत होता है:

import AuthPlugin from '@nocobase/plugin-auth/client';

class CustomAuthPlugin extends Plugin {
  async load() {
    const auth = this.app.pm.get(AuthPlugin);
    auth.registerType('custom-auth-type', {
      components: {
        SignInForm, // लॉगिन फ़ॉर्म
        SignInButton, // लॉगिन (तीसरे पक्ष का) बटन, लॉगिन फ़ॉर्म का एक विकल्प हो सकता है
        SignUpForm, // साइन अप फ़ॉर्म
        AdminSettingsForm, // एडमिन सेटिंग्स फ़ॉर्म
      },
    });
  }
}

#लॉगिन फ़ॉर्म

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

#लॉगिन बटन

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

#साइन अप फ़ॉर्म

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

#एडमिन सेटिंग्स फ़ॉर्म

ऊपर सामान्य प्रमाणीकरणकर्ता कॉन्फ़िगरेशन है, और नीचे कस्टम कॉन्फ़िगरेशन फ़ॉर्म का वह हिस्सा है जिसे पंजीकृत किया जा सकता है।

#API अनुरोध करें

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

import { useAPIClient } from '@nocobase/client';

// कंपोनेंट में उपयोग करें
const api = useAPIClient();
api.auth.signIn(data, authenticator);

विस्तृत API संदर्भ के लिए @nocobase/sdk - Auth देखें।