Guys follow ig mimin Follow Instagram

Belajar Backend Part 10 - Implementasi OAuth 2.0

Implementasi OAuth 2.0 untuk Otorisasi di Aplikasi Express.js

Implementasi OAuth 2.0 untuk Otorisasi di Aplikasi Express.js

OAuth 2.0 Authorization

OAuth 2.0 adalah protokol otorisasi yang memungkinkan aplikasi web dan mobile untuk mengakses sumber daya di server lain tanpa perlu berbagi kredensial pengguna secara langsung. OAuth 2.0 sering digunakan dalam integrasi dengan layanan pihak ketiga seperti Google, Facebook, dan GitHub. Artikel ini akan membahas cara mengimplementasikan OAuth 2.0 di aplikasi Express.js untuk mengakses API eksternal atau layanan pihak ketiga.

Apa itu OAuth 2.0?

OAuth 2.0 adalah standar otorisasi yang memungkinkan aplikasi untuk mengakses data di server lain dengan izin pengguna. Berbeda dengan metode autentikasi tradisional, OAuth 2.0 memungkinkan pengguna untuk memberikan izin terbatas ke aplikasi tanpa berbagi kredensial mereka, seperti username dan password.

Konsep Dasar OAuth 2.0

OAuth 2.0 menggunakan token untuk mengautentikasi dan mengotorisasi aplikasi. Ada beberapa jenis token yang digunakan dalam OAuth 2.0, seperti:

  • Authorization Code: Token yang digunakan dalam aplikasi web yang mengarah ke halaman otorisasi dan menerima kode otorisasi.
  • Implicit: Token yang dikirimkan langsung ke aplikasi client dari server otorisasi.
  • Client Credentials: Digunakan oleh aplikasi untuk mengakses API dengan kredensial aplikasi, tanpa melibatkan pengguna.
  • Resource Owner Password Credentials: Pengguna memberikan username dan password untuk mengakses API.

Setup OAuth 2.0 di Aplikasi Express.js

Untuk mengimplementasikan OAuth 2.0 di aplikasi Express.js, kita akan menggunakan pustaka passport-oauth2 dan passport yang memungkinkan integrasi OAuth 2.0 dengan Passport.js. Berikut adalah langkah-langkah dasar untuk menyiapkan OAuth 2.0 di aplikasi Express.js.

1. Install Dependencies


npm install passport passport-oauth2 express-session

    

2. Setup Passport untuk OAuth 2.0

Setelah menginstal dependencies, kita perlu mengonfigurasi Passport.js untuk menggunakan strategi OAuth 2.0. Dalam contoh ini, kita akan mengintegrasikan aplikasi Express.js dengan GitHub untuk mengakses informasi pengguna dari API GitHub.


const passport = require('passport');
const OAuth2Strategy = require('passport-oauth2').Strategy;

passport.use('github', new OAuth2Strategy({
    authorizationURL: 'https://github.com/login/oauth/authorize',
    tokenURL: 'https://github.com/login/oauth/access_token',
    clientID: 'your-client-id',
    clientSecret: 'your-client-secret',
    callbackURL: 'http://localhost:3000/auth/github/callback'
}, function(accessToken, refreshToken, profile, done) {
    return done(null, profile);
}));

app.get('/auth/github', passport.authenticate('github'));

app.get('/auth/github/callback', passport.authenticate('github', { failureRedirect: '/' }), (req, res) => {
    res.redirect('/');
});

    

Penjelasan Kode

  • authorizationURL: URL untuk mengotorisasi aplikasi dengan GitHub.
  • tokenURL: URL untuk menukarkan kode otorisasi dengan token akses.
  • clientID dan clientSecret: Kredensial aplikasi yang didapatkan dari GitHub Developer Console.
  • callbackURL: URL yang akan digunakan GitHub untuk mengirimkan pengguna kembali setelah otorisasi selesai.

Login dan Logout

Untuk menangani login dan logout pengguna, kita dapat menambahkan route untuk mengelola sesi pengguna setelah berhasil login dengan GitHub:


app.get('/logout', (req, res) => {
    req.logout((err) => {
        res.redirect('/');
    });
});

app.get('/profile', (req, res) => {
    if (!req.isAuthenticated()) {
        return res.redirect('/auth/github');
    }
    res.json(req.user);
});

    

Kesimpulan

Dengan menggunakan OAuth 2.0 di aplikasi Express.js, kita dapat memberikan akses aman ke data pengguna tanpa harus mengelola kredensial mereka secara langsung. Implementasi OAuth 2.0 memungkinkan kita untuk mengintegrasikan aplikasi kita dengan berbagai layanan eksternal seperti Google, Facebook, dan GitHub, membuka peluang untuk aplikasi dengan integrasi layanan pihak ketiga.

إرسال تعليق

Oops!
It seems there is something wrong with your internet connection. Please connect to the internet and start browsing again.
AdBlock Detected!
We have detected that you are using adblocking plugin in your browser.
The revenue we earn by the advertisements is used to manage this website, we request you to whitelist our website in your adblocking plugin.