Menerapkan Otentikasi OAuth 2.0 di Node.js

Langkah 1: Siapkan Proyek Node.js

Mulailah dengan menyiapkan proyek Node.js baru menggunakan manajer paket seperti npm atau benang. Jalankan perintah berikut di terminal Anda:

csharpCopy code
npm init

Ini akan membuat file package.json untuk mengelola dependensi proyek Anda.

Langkah 2: Instal Paket yang Diperlukan

Untuk mengimplementasikan otentikasi OAuth 2.0 di Node.js, kita perlu menginstal paket yang diperlukan. Jalankan perintah berikut di terminal Anda:

Copy code
npm install express passport passport-google-oauth20

Tindakan ini akan menginstal Express.js, kerangka web Node.js yang populer, serta paket passport dan passport-google-oauth20, yang penting untuk autentikasi OAuth 2.0 dengan Google.

Langkah 3: Buat Kredensial OAuth 2.0

Sebelum melanjutkan, Anda perlu membuat kredensial OAuth 2.0 di konsol pengembang platform masing-masing. Misalnya, jika Anda ingin menerapkan Google OAuth, buka Google Developers Console (**https://console.developers.google.com/**), buat proyek baru, dan aktifkan Google OAuth 2.0 API . Dapatkan ID klien dan rahasia klien untuk aplikasi Anda.

Langkah 4: Konfigurasikan Passport.js

Buat file baru, passport.js, untuk mengonfigurasi Passport.js, middleware autentikasi populer untuk Node.js. Dalam file ini, inisialisasi Passport.js, siapkan strategi Google OAuth 2.0, dan tentukan fungsi serialisasi dan deserialisasi.

javascriptCopy code
const passport = require('passport');
const GoogleStrategy = require('passport-google-oauth20').Strategy;

passport.use(
  new GoogleStrategy(
    {
      clientID: 'YOUR_CLIENT_ID',
      clientSecret: 'YOUR_CLIENT_SECRET',
      callbackURL: '/auth/google/callback',
    },
    (accessToken, refreshToken, profile, done) => {
      // Code to handle user authentication and retrieval
    }
  )
);

passport.serializeUser((user, done) => {
  // Code to serialize user data
});

passport.deserializeUser((id, done) => {
  // Code to deserialize user data
});

Ganti 'YOUR_CLIENT_ID' dan 'YOUR_CLIENT_SECRET' dengan kredensial Anda sendiri yang diperoleh dari penyedia OAuth.

Langkah 5: Buat Rute Otentikasi

Buat file baru, authRoutes.js, untuk menentukan rute autentikasi aplikasi Anda. Dalam file ini, tentukan rute untuk memulai alur autentikasi OAuth 2.0, menangani URL panggilan balik, dan mengeluarkan pengguna.

javascriptCopy code
const express = require('express');
const passport = require('passport');
const router = express.Router();

// Initiates the Google OAuth 2.0 authentication flow
router.get('/auth/google', passport.authenticate('google', { scope: ['profile', 'email'] }));

// Callback URL for handling the OAuth 2.0 response
router.get('/auth/google/callback', passport.authenticate('google', { failureRedirect: '/login' }), (req, res) => {
  // Successful authentication, redirect or handle the user as desired
  res.redirect('/');
});

// Logout route
router.get('/logout', (req, res) => {
  req.logout();
  res.redirect('/');
});

module.exports = router;

Langkah 6: Siapkan Server Express.js

Di file server utama Anda (mis., app.js), impor paket yang diperlukan dan konfigurasikan server Express.js. Sertakan middleware Passport.js, manajemen sesi, dan rute autentikasi.

javascriptCopy code
const express = require('express');
const session = require('express-session');
const passport = require('passport');
const authRoutes = require('./authRoutes');

const app = express();

app.use(session({ secret: 'YOUR_SESSION_SECRET', resave: false, saveUninitialized: false }));
app.use(passport.initialize());
app.use(passport.session());

app.use('/', authRoutes);

// Start the server
app.listen(3000, () => {
  console.log('Server started on port 3000');
});

Ganti 'YOUR_SESSION_SECRET' dengan string rahasia yang digunakan untuk menandatangani cookie ID sesi.

Langkah 7: Menguji Alur Otentikasi

Mulai server Node.js Anda menggunakan node app.js atau perintah yang sesuai. Kunjungi rute yang sesuai (misalnya, /auth/google) di browser web Anda untuk memulai alur autentikasi OAuth 2.0. Setelah otentikasi berhasil, Anda akan diarahkan ke URL panggilan balik (/auth/google/callback) dengan informasi pengguna. Anda kemudian dapat menangani informasi ini sesuai keinginan, seperti menyimpannya dalam database atau membuat sesi pengguna.

jika Anda memiliki pertanyaan atau saran, beri tahu saya di Instagram saya atau di [email protected]