JavaScript (Node.js) के लिए OAuth क्लाइंट: संपूर्ण गाइड
OAuth (Open Authorization) एक खुला प्रोटोकॉल है जो किसी तीसरे पक्ष के एप्लिकेशन को उपयोगकर्ता का लॉगिन और पासवर्ड दिए बिना उसके संसाधनों तक सीमित पहुंच प्रदान करता है। Node.js की दुनिया में, आधुनिक वेब एप्लिकेशन बनाते समय OAuth क्लाइंट को लागू करना सबसे आम कार्यों में से एक है। इस लेख में, हम विस्तार से जानेंगे कि लोकप्रिय Passport.js लाइब्रेरी का उपयोग करके Google और GitHub के माध्यम से प्रमाणीकरण के लिए अपना स्वयं का OAuth क्लाइंट कैसे लिखें।
OAuth 2.0 क्या है और इसकी आवश्यकता क्यों है?
OAuth 2.0 एक मानक है जिसका उपयोग एक्सेस डेलिगेशन के लिए किया जाता है। अपने सर्वर पर उपयोगकर्ताओं के पासवर्ड स्टोर करने के बजाय, आप उन्हें प्रदाता (Google, GitHub, Facebook) के पेज पर रीडायरेक्ट करते हैं, जहां वे सहमति देते हैं। उसके बाद, आपका एप्लिकेशन एक access token (एक्सेस टोकन) प्राप्त करता है, जिसके साथ वह उपयोगकर्ता की ओर से प्रदाता के API तक पहुंच सकता है।
मुख्य लाभ:
- सुरक्षा — पासवर्ड आपके सर्वर पर स्टोर नहीं होते।
- उपयोगकर्ता के लिए सुविधा — दोबारा रजिस्टर करने की आवश्यकता नहीं।
- लचीलापन — आप केवल उन्हीं डेटा तक पहुंच मांग सकते हैं जिनकी वास्तव में आवश्यकता है (scope)।
आवश्यक पैकेज इंस्टॉल करना
Node.js में OAuth के साथ काम करने के लिए हम निम्नलिखित लाइब्रेरी का उपयोग करेंगे:
express— वेब फ्रेमवर्कpassport— प्रमाणीकरण के लिए मिडलवेयरpassport-google-oauth20— Google के लिए स्ट्रेटेजीpassport-github2— GitHub के लिए स्ट्रेटेजीexpress-session— सेशन स्टोर करने के लिए
इन्हें एक कमांड से इंस्टॉल करें:
npm install express passport passport-google-oauth20 passport-github2 express-session
सर्वर की बुनियादी सेटअप
एक app.js फ़ाइल बनाएं और सभी आवश्यक मॉड्यूल को शामिल करें:
const express = require('express');
const passport = require('passport');
const session = require('express-session');
const app = express();
// सेशन सेटअप
app.use(session({
secret: 'your-secret-key',
resave: false,
saveUninitialized: true
}));
app.use(passport.initialize());
app.use(passport.session());
// यूजर सीरियलाइजेशन के लिए प्लेसहोल्डर
passport.serializeUser((user, done) => done(null, user));
passport.deserializeUser((obj, done) => done(null, obj));
app.listen(3000, () => console.log('सर्वर पोर्ट 3000 पर शुरू हो गया है'));
Google के लिए OAuth स्ट्रेटेजी सेटअप
शुरू करने से पहले, आपको Google Cloud Console में एक एप्लिकेशन रजिस्टर करना होगा और Client ID और Client Secret प्राप्त करना होगा। सेटिंग्स में redirect URI डालें: http://localhost:3000/auth/google/callback।
const GoogleStrategy = require('passport-google-oauth20').Strategy;
passport.use(new GoogleStrategy({
clientID: 'आपका_GOOGLE_CLIENT_ID',
clientSecret: 'आपका_GOOGLE_CLIENT_SECRET',
callbackURL: 'http://localhost:3000/auth/google/callback'
}, (accessToken, refreshToken, profile, done) => {
// यहां आप प्रोफाइल को डेटाबेस में सेव कर सकते हैं
return done(null, profile);
}));
// Google OAuth के लिए रूट्स
app.get('/auth/google', passport.authenticate('google', { scope: ['profile', 'email'] }));
app.get('/auth/google/callback',
passport.authenticate('google', { failureRedirect: '/' }),
(req, res) => res.redirect('/profile')
);
GitHub के लिए OAuth स्ट्रेटेजी सेटअप
GitHub के लिए, GitHub Developer Settings में OAuth App रजिस्टर करें। Homepage URL: http://localhost:3000, Authorization callback URL: http://localhost:3000/auth/github/callback।
const GitHubStrategy = require('passport-github2').Strategy;
passport.use(new GitHubStrategy({
clientID: 'आपका_GITHUB_CLIENT_ID',
clientSecret: 'आपका_GITHUB_CLIENT_SECRET',
callbackURL: 'http://localhost:3000/auth/github/callback'
}, (accessToken, refreshToken, profile, done) => {
// यहां आप प्रोफाइल को डेटाबेस में सेव कर सकते हैं
return done(null, profile);
}));
// GitHub OAuth के लिए रूट्स
app.get('/auth/github', passport.authenticate('github', { scope: ['user:email'] }));
app.get('/auth/github/callback',
passport.authenticate('github', { failureRedirect: '/' }),
(req, res) => res.redirect('/profile')
);
प्रोफाइल पेज और लॉगआउट
एक सरल प्रोफाइल पेज बनाएं जो उपयोगकर्ता का नाम और ईमेल दिखाए:
app.get('/profile', (req, res) => {
if (!req.isAuthenticated()) {
return res.redirect('/');
}
res.send(`
नमस्ते, ${req.user.displayName}!
ईमेल: ${req.user.emails[0].value}
लॉगआउट करें
`);
});
app.get('/logout', (req, res) => {
req.logout(() => {
res.redirect('/');
});
});
निष्कर्ष
इस गाइड में, हमने सीखा कि Node.js में Passport.js का उपयोग करके OAuth 2.0 क्लाइंट कैसे बनाया जाता है। अब आप Google और GitHub के माध्यम से उपयोगकर्ताओं को प्रमाणित कर सकते हैं और उनके API तक पहुंच सकते हैं। यह आपके वेब एप्लिकेशन को अधिक सुरक्षित और उपयोगकर्ता-अनुकूल बनाता है।