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

इस ट्यूटोरियल में, आप सीखेंगे कि पासपोर्ट और एक्सप्रेस का उपयोग करके नोड में Google प्रमाणीकरण कैसे लागू किया जाए।

पासपोर्ट क्या है?

पासपोर्ट (या Passport.js) एक नोड प्रमाणीकरण मिडलवेयर है जो Google और Twitter जैसे प्लेटफ़ॉर्म का उपयोग करके सामाजिक प्रमाणीकरण सहित उपयोगकर्ताओं को प्रमाणित करने के लिए 500 से अधिक रणनीतियाँ प्रदान करता है।

आप उपयोग करेंगे पासपोर्ट-गूगल-oauth2 Google पर उपयोगकर्ताओं को प्रमाणित करने की रणनीति।

नोड में Google प्रमाणीकरण प्रणाली बनाना

यह आपके द्वारा बनाए जाने वाले प्रमाणीकरण सिस्टम का एक सिंहावलोकन है:

  • जब कोई उपयोगकर्ता लॉगिन बटन पर क्लिक करता है, तो उन्हें Google साइन-इन पृष्ठ पर भेजा जाएगा जहां वे साइन इन करेंगे।
  • Google एक्सेस टोकन के साथ उपयोगकर्ता को आपके एप्लिकेशन पर रीडायरेक्ट करेगा। एक्सेस टोकन आपको उस उपयोगकर्ता की प्रोफ़ाइल जानकारी तक पहुंचने की अनुमति देता है।
    instagram viewer
  • प्रोफ़ाइल डेटा प्राप्त करने के लिए Google को एक्सेस टोकन भेजें।
  • एक नया उपयोगकर्ता बनाएं या मौजूदा उपयोगकर्ता को डेटाबेस से पुनर्प्राप्त करें।
  • संवेदनशील मार्गों की सुरक्षा के लिए JWTs का उपयोग करें।

पासपोर्ट का उपयोग करके NodeJS में Google प्रमाणीकरण कैसे सेट करें

Google OAuth के साथ उपयोगकर्ताओं को अधिकृत करने के लिए नीचे दिए गए चरणों का पालन करें,

चरण 1: एक Google क्लाइंट आईडी और क्लाइंट सीक्रेट बनाएं

अपने ऐप में उपयोगकर्ताओं को साइन इन करने के लिए Google का उपयोग करने से पहले, आपको पासपोर्ट को कॉन्फ़िगर करते समय क्लाइंट आईडी और क्लाइंट सीक्रेट का उपयोग करने के लिए Google के साथ अपना आवेदन पंजीकृत करना होगा।

में लॉग इन करें गूगल क्लाउड कंसोल और अपना ऐप पंजीकृत करने के लिए निम्न चरणों का पालन करें।

एक नया प्रोजेक्ट बनाएं। मेनू बार में, चुनें साख और ड्रॉप-डाउन सूची में, चुनें OAuth क्लाइंट आईडी.

आवेदन प्रकार के लिए, चुनें वेब एप्लीकेशन. नाम फ़ील्ड में अपने आवेदन के लिए पसंदीदा नाम जोड़ें।

अधिकृत रीडायरेक्ट यूआरआई के तहत, उपयोग करें http://localhost: 3000 तथा http://localhost: 3000/प्रमाण/गूगल/कॉलबैक अधिकृत रीडायरेक्ट यूआरआई के लिए।

क्लिक सृजन करना OAuth क्लाइंट बनाने के लिए। चूंकि ऐप क्रेडेंशियल संवेदनशील हैं, इसलिए आपको एक बनाना होगा .env फ़ाइल करें और उसमें क्लाइंट आईडी और क्लाइंट सीक्रेट जोड़ें।

CLIENT_ID = 

CLIENT_SECRET =

चरण 2: नोड सर्वर सेट करें

एक फ़ोल्डर बनाएँ, उपयोगकर्ता-गूगल-प्रमाणीकरण, और उस पर नेविगेट करें।

एमकेडीआईआर उपयोगकर्ता-गूगल-प्राधिकरण
सीडी उपयोगकर्ता-गूगल-प्राधिकरण

प्रारंभ NPM निर्माण के लिए पैकेज.जेसन.

npm init -y

चूंकि आप एक्सप्रेस का उपयोग कर रहे होंगे सर्वर बनाएं, निम्न आदेश चलाकर इसे स्थापित करें।

एनपीएम एक्सप्रेस स्थापित करें

अपने पसंदीदा टेक्स्ट एडिटर के साथ फोल्डर खोलें और एक नई फाइल बनाएं app.js. यह आपके आवेदन के प्रवेश बिंदु के रूप में काम करेगा।

में NodeJS सर्वर बनाएँ app.js.

कॉन्स्ट एक्सप्रेस = आवश्यकता ("एक्सप्रेस");
कॉन्स्ट ऐप = एक्सप्रेस ();
कॉन्स्ट पोर्ट = 3000;
app.listen (पोर्ट, () => {
कंसोल.लॉग (`पोर्ट पर सुन रहा है ${PORT}`);
});

चरण 2: MongoDB सेट करें

आप Google से प्राप्त उपयोगकर्ता डेटा को a. में संग्रहीत करेंगे मोंगोडीबी डेटाबेस. उपयोगकर्ता जानकारी को सहेजने से पहले, आपको उस संरचना को परिभाषित करने की आवश्यकता है जिसमें डेटा संग्रहीत किया जाएगा। इसके लिए नेवला एकदम सही है। यह डेटा मॉडल बनाने का एक बहुत ही सरल तरीका प्रदान करता है।

इंस्टॉल नेवला.

npm नेवला स्थापित करें

एक नई फ़ाइल बनाएँ userModel.js, और उपयोगकर्ता स्कीमा बनाएं।

कॉन्स्ट नेवला = आवश्यकता ("मोंगोज़");
const {स्कीमा} = mongoose.model;
const UserSchema = नई स्कीमा ({
गूगल: {
पहचान: {
टाइप करें: स्ट्रिंग,
},
नाम: {
टाइप करें: स्ट्रिंग,
},
ईमेल: {
टाइप करें: स्ट्रिंग,
},
},
});
const उपयोगकर्ता = mongoose.model ("उपयोगकर्ता", UserSchema);
मॉड्यूल.एक्सपोर्ट्स = उपयोगकर्ता;

में userModel.js, आपने नेवला आयात किया है और एक नया स्कीमा बनाया है।

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

अगला, बनाएं डीबी.जेएस.

कॉन्स्ट नेवला = आवश्यकता ("मोंगोज़");
नेवला वादा = वैश्विक। वादा;
कॉन्स्ट डीबीयूआरएल = "मोंगोडब: // लोकलहोस्ट / यूजर";
कॉन्स्ट कनेक्ट = async () => {
mongoose.connect (dbUrl, { useNewUrlParser: true, useUnifiedTopology: true});
कास्ट डीबी = mongoose.connection;
db.on ("त्रुटि", () => {
कंसोल.लॉग ("कनेक्ट नहीं हो सका");
});
db.once ("खुला", () => {
कंसोल.लॉग ("> डेटाबेस से सफलतापूर्वक जुड़ा");
});
};
मॉड्यूल.एक्सपोर्ट्स = {कनेक्ट};

में डेटाबेस से कनेक्ट करें app.js.

कॉन्स्ट एक्सप्रेस = आवश्यकता ("एक्सप्रेस");
कॉन्स्ट ऐप = एक्सप्रेस ();
कॉन्स्ट पोर्ट = 3000;
कॉन्स्ट डीबी = आवश्यकता ("./ डीबी");
डीबी.कनेक्ट ();
app.listen (पोर्ट, () => {
कंसोल.लॉग (`पोर्ट पर सुन रहा है ${PORT}`);
});

चरण 3: पासपोर्ट सेट करें

इंस्टॉल पासपोर्ट तथा पासपोर्ट-गूगल-oauth2.

npm मैं पासपोर्ट पासपोर्ट-google-oauth2

एक नई फ़ाइल बनाएँ, पासपोर्टकॉन्फिग.जेएस, और यहां से Google कार्यनीति आयात करें पासपोर्ट-गूगल-oauth2 तथा userModel.js.

const GoogleStrategy = आवश्यकता ("पासपोर्ट-google-oauth2")। रणनीति;
कॉन्स उपयोगकर्ता = आवश्यकता ("./ उपयोगकर्ता मॉडल");

कॉन्फ़िगर करने के लिए अपने ऐप क्रेडेंशियल का उपयोग करें पासपोर्ट Google OAuth के साथ।

मॉड्यूल.एक्सपोर्ट्स = (पासपोर्ट) => {
Passport.use (नई GoogleStrategy({
क्लाइंट आईडी: प्रक्रिया.env. ग्राहक ID,
क्लाइंटसीक्रेट: process.env. CLIENT_SECRET,
कॉलबैक यूआरएल: " http://localhost: 3000/प्रमाण/गूगल/कॉलबैक",
passReqToCallback: सच
},
async (अनुरोध, एक्सेसटोकन, रिफ्रेशटोकन, प्रोफाइल, किया हुआ) => {
कोशिश करो {
मौजूदा उपयोगकर्ता = प्रतीक्षा करें User.findOne ({ 'google.id': profile.id});
// यदि उपयोगकर्ता मौजूद है तो उपयोगकर्ता को वापस करें
अगर (मौजूदा उपयोगकर्ता) {
वापसी की गई (शून्य, मौजूदा उपयोगकर्ता);
}
// यदि उपयोगकर्ता मौजूद नहीं है, तो एक नया उपयोगकर्ता बनाएं
कंसोल.लॉग ('नया उपयोगकर्ता बनाया जा रहा है...');
कॉन्स्ट न्यू यूज़र = नया उपयोगकर्ता ({
विधि: 'गूगल',
गूगल: {
आईडी: profile.id,
नाम: प्रोफ़ाइल.डिस्प्लेनाम,
ईमेल: profile.emails[0].value
}
});
प्रतीक्षा करें newUser.save ();
वापसी की गई (शून्य, नया उपयोगकर्ता);
} पकड़ (त्रुटि) {
वापसी की गई (त्रुटि, गलत)
}
}
));
}

एक बार जब आप Google से प्रोफ़ाइल जानकारी प्राप्त कर लेते हैं, तो जांच लें कि उपयोगकर्ता डेटाबेस में मौजूद है या नहीं। यदि वे करते हैं, तो बस पाए गए उपयोगकर्ता को वापस कर दें। यदि उपयोगकर्ता नया है, तो डेटाबेस में एक नया दस्तावेज़ बनाएं और बनाए गए उपयोगकर्ता को वापस करें।

ध्यान दें कि आप साथ काम कर रहे हैं env चर इसलिए का उपयोग करें NPM पैकेज दोतेनव उन्हें अपने आवेदन में एक्सेस करने के लिए।

इंस्टॉल दोतेनव.

npm dotenv स्थापित करें

उपयोग दोतेनव में app.js.

आवश्यकता ("डॉटेनव")। कॉन्फिग ()

में app.js,उत्तीर्ण पासपोर्ट प्रति पासपोर्टकॉन्फिग.जेएस

कॉन्स्ट पासपोर्ट = आवश्यकता ("पासपोर्ट");
आवश्यकता ("./passportConfig") (पासपोर्ट);

चरण 4: प्रमाणीकरण मार्ग बनाएं

आपको तीन मार्गों की आवश्यकता है:

  • पहुँच टोकन प्राप्त करने के लिए उपयोगकर्ता को Google साइन-इन पृष्ठ पर पुनर्निर्देशित करें।
  • प्राप्त पहुंच टोकन का उपयोग करके उपयोगकर्ता डेटा पुनर्प्राप्त करें।
  • उपयोगकर्ता को प्रोफ़ाइल पृष्ठ पर रीडायरेक्ट करने के बाद सफल प्रमाणीकरण.
// उपयोगकर्ता को Google साइन इन पेज पर रीडायरेक्ट करें
app.get(
"/ प्रमाणीकरण/गूगल",
Passport.authenticate("google", { स्कोप: ["ईमेल", "प्रोफाइल"]})
);
// प्राप्त टोकन का उपयोग करके उपयोगकर्ता डेटा प्राप्त करें
app.get(
"/ प्रमाणीकरण/गूगल/कॉलबैक",
पासपोर्ट.प्रमाणीकरण ("गूगल", {सत्र: झूठा}),
(अनुरोध, रेस) => {
res.redirect ("/ प्रोफाइल /");
}
);
// सफल साइन इन के बाद प्रोफ़ाइल मार्ग
app.get("/profile", (req, res) => {
कंसोल.लॉग (req);
res.send ("स्वागत है");
});

चरण 5: निजी मार्गों को सुरक्षित रखें

अब जब आप एक उपयोगकर्ता के रूप में लॉग इन कर चुके हैं, तो आप अपने एप्लिकेशन के कुछ हिस्सों को केवल प्रमाणित उपयोगकर्ताओं तक कैसे सीमित कर सकते हैं? इसके बारे में जाने का एक तरीका JSON वेब टोकन (JWTs) का उपयोग करना है। JWTs सूचना प्रसारित करने का एक सुरक्षित तरीका प्रदान करते हैं। प्रति उपयोगकर्ताओं को अधिकृत करें JWTs का उपयोग करते हुए, आपका आवेदन होगा:

  • उपयोगकर्ता डेटा का उपयोग करके टोकन जेनरेट करें।
  • उपयोगकर्ता को टोकन पास करें (उपयोगकर्ता उन अनुरोधों के साथ टोकन वापस भेज देगा जिन्हें प्राधिकरण की आवश्यकता है)।
  • वापस भेजे गए टोकन को सत्यापित करें।
  • यदि प्रस्तुत टोकन वैध है तो उपयोगकर्ता को एक्सेस प्रदान करें।

इंस्टॉल जेसनवेबटोकन JWTs के साथ काम करने के लिए।

npm jsonwebtoken स्थापित करें

में app.js, आयात जेसनवेबटोकन.

const jwt = आवश्यकता ("jsonwebtoken")

उपयोगकर्ता को साइन करने और टोकन जेनरेट करने के लिए Google कॉलबैक URL को संशोधित करें।

app.get(
"/ प्रमाणीकरण/गूगल/कॉलबैक",
पासपोर्ट.प्रमाणीकरण ("गूगल", {सत्र: झूठा}),
(अनुरोध, रेस) => {
jwt.साइन (
{उपयोगकर्ता: req.user},
"गुप्त कुंजी",
{समाप्त हो जाता है: "1h"},
(गलती, टोकन) => {
अगर (गलती) {
वापसी res.json({
टोकन: शून्य,
});
}
रेस.जेसन({
टोकन,
});
}
);
}
);

यदि आप लॉग इन करते हैं, तो आपको टोकन प्राप्त होगा।

अगला, उपयोग करें पासपोर्ट-jwt, टोकन को सत्यापित करने और उपयोगकर्ताओं को अधिकृत करने के लिए पासपोर्ट द्वारा प्रदान की गई एक JWT रणनीति।

npm पासपोर्ट-jwt स्थापित करें

में पासपोर्टकॉन्फिग.जेएस, JWT रणनीति जोड़ें।

const JwtStrategy = आवश्यकता ("पासपोर्ट-jwt")। रणनीति;
const { ExtractJwt } = आवश्यकता ("पासपोर्ट-jwt");
मॉड्यूल.एक्सपोर्ट्स = (पासपोर्ट) => {
Passport.use (नई GoogleStrategy(
// गूगल रणनीति
);
पासपोर्ट.उपयोग(
नई JwtStrategy(
{
jwtFromRequest: ExtractJwt.fromHeader ("प्राधिकरण"),
सीक्रेटऑर्की: "सीक्रेटकी",
},
async (jwtPayload, किया हुआ) => {
कोशिश करो {
// उपयोगकर्ता निकालें
कॉन्स्ट यूजर = jwtPayload.user;
किया (शून्य, उपयोगकर्ता);
} पकड़ (त्रुटि) {
किया (त्रुटि, गलत);
}
}
)
);
}

यहां, आप प्राधिकरण शीर्षलेख से टोकन निकाल रहे हैं जहां इसे संग्रहीत किया जाता है-जो इसे अनुरोध निकाय में संग्रहीत करने से कहीं अधिक सुरक्षित है।

एक बार टोकन सत्यापित हो जाने के बाद, उपयोगकर्ता ऑब्जेक्ट को अनुरोध निकाय में वापस भेज दिया जाता है। उपयोगकर्ताओं को अधिकृत करने के लिए, पासपोर्ट JWT प्रमाणीकरण मिडलवेयर को संरक्षित मार्गों में जोड़ें।

app.get(
"/ प्रोफाइल",
पासपोर्ट.प्रमाणीकरण ("jwt", {सत्र: झूठा}),
(req, res, next) => {
res.send ("स्वागत है");
}
);

अब, केवल वैध टोकन प्रदान करने वाले अनुरोधों को ही एक्सेस मिलेगा।

अगले कदम

इस ट्यूटोरियल ने आपको दिखाया कि आप कैसे पासपोर्ट का उपयोग उपयोगकर्ताओं को उनके Google खाते का उपयोग करके अपने एप्लिकेशन में साइन इन करने के लिए कर सकते हैं। पासपोर्ट का उपयोग करना अन्य रूपों की तुलना में बहुत आसान है, और आप इसका उपयोग करके बहुत समय बचाएंगे।

पासपोर्ट ट्विटर और फेसबुक जैसे अन्य पहचान प्रदाताओं के साथ उपयोग करने के लिए अन्य प्रमाणीकरण रणनीतियां भी प्रदान करता है। तो, यह उनको भी जांचने लायक है।

पासपोर्ट और MongoDB का उपयोग करके NodeJS में उपयोगकर्ता प्रमाणीकरण

आगे पढ़िए

साझा करनाकलरवसाझा करनाईमेल

संबंधित विषय

  • प्रोग्रामिंग
  • सुरक्षा
  • प्रोग्रामिंग
  • प्रोग्रामिंग टूल्स
  • गूगल
  • गूगल प्रमाणक

लेखक के बारे में

मैरी गैथोनी (11 लेख प्रकाशित)

मैरी गैथोनी एक सॉफ्टवेयर डेवलपर हैं जिन्हें तकनीकी सामग्री बनाने का जुनून है जो न केवल सूचनात्मक है बल्कि आकर्षक भी है। जब वह कोडिंग या लेखन नहीं कर रही होती है, तो उसे दोस्तों के साथ घूमने और बाहर रहने में मज़ा आता है।

मैरी गैथोनि. की और फ़िल्में या टीवी शो

हमारे न्यूज़लेटर की सदस्यता लें

तकनीकी युक्तियों, समीक्षाओं, निःशुल्क ई-पुस्तकों और अनन्य सौदों के लिए हमारे न्यूज़लेटर से जुड़ें!

सब्सक्राइब करने के लिए यहां क्लिक करें