Otorisasi Terbuka, juga dikenal sebagai OAuth, adalah protokol yang digunakan untuk mengotorisasi pengguna di situs web Anda menggunakan beberapa layanan pihak ketiga seperti Google, Github, Facebook, dll. Layanan pihak ketiga membagikan beberapa data (nama, email, gambar profil, dll.) dengan situs web Anda dan kemudian mengotorisasi pengguna atas namanya tanpa mengelola kata sandi dan nama pengguna untuk situs web Anda, dan menghemat banyak masalah tambahan bagi pengguna.
Cara Kerja OAuth
Saat pengguna mengklik "Masuk dengan Google", pengguna akan dibawa ke halaman persetujuan OAuth Google. Ketika pengguna menyetujui persetujuan dan mengautentikasi identitasnya di Google, Google akan menghubungi situs web Anda sebagai layanan pihak ketiga dan memberi otorisasi kepada pengguna atas namanya dan membagikan beberapa data dengan situs web Anda. Dengan cara ini, pengguna dapat diotorisasi tanpa mengelola kredensial untuk situs web Anda secara terpisah.
Menerapkan Google OAuth menggunakan Node.js
Hampir semua bahasa pemrograman menyediakan perpustakaan yang berbeda untuk mengimplementasikan google oauth untuk mengotorisasi pengguna. simpul.js menyediakan perpustakaan 'paspor' dan 'paspor-google-oauth20' untuk mengimplementasikan google oauth. Pada artikel ini, kami akan menerapkan protokol oauth untuk mengizinkan pengguna menggunakan node.js.
Buat Proyek di Google
Langkah pertama untuk menerapkan Google OAuth adalah membuat proyek di konsol pengembang google untuk situs web Anda. Proyek ini digunakan untuk mendapatkan kunci API yang digunakan untuk membuat permintaan ke Google untuk otentikasi terbuka. Buka tautan berikut dan buat proyek Anda.
https://konsol.pengembang.google.com
Mengonfigurasi Proyek Google
Setelah Anda membuat proyek, masuk ke proyek dan pilih "Layar persetujuan OAuth" dari menu sebelah kiri.
Klik tombol 'buat' dan berikan semua detail proyek Anda. Klik "Simpan dan Lanjutkan" untuk melanjutkan.
Sekarang berikan ruang lingkup proyek Anda. Cakupan adalah jenis izin untuk mengakses data pengguna dari akun google. Anda perlu mengatur izin untuk mendapatkan data pengguna tertentu dari akun google Anda. Klik “Simpan dan Lanjutkan.”
Sekarang tambahkan pengguna uji ke proyek jika Anda mau. Pengguna uji adalah satu-satunya pengguna yang diizinkan yang dapat mengakses aplikasi web Anda dalam mode Pengujian. Untuk saat ini, kami tidak akan memasukkan pengguna uji dan klik "Simpan dan Lanjutkan" untuk beralih ke halaman ringkasan proyek.
Tinjau proyek Anda di halaman ringkasan dan simpan konfigurasinya. Sekarang kami akan membuat kredensial untuk proyek kami. Pilih tab 'Kredensial' di menu sebelah kiri dan klik tombol 'Buat kredensial' di atas untuk menghasilkan OAuth 2.0 ID Klien.
Dari menu tarik-turun, pilih 'ID klien OAuth' dan tentukan jenis aplikasi sebagai 'Aplikasi web' dan nama aplikasi Anda.
Pada halaman yang sama, kita harus menyediakan dua URI, 'Authorized Javascript Origins' dan 'Authorized redirect URIs'. 'Asal javascript resmi' adalah asal HTTP aplikasi web Anda, dan tidak dapat memiliki jalur apa pun. 'URI pengalihan resmi' adalah URI yang tepat dengan jalur tempat pengguna akan dialihkan setelah autentikasi google.
Setelah memasukkan semua entri yang diperlukan, klik 'buat' untuk membuat kredensial OAuth.
Memulai Node.Proyek js
Sejauh ini, kami telah membuat proyek google untuk mengotorisasi pengguna untuk aplikasi kami menggunakan google. Sekarang kita akan memulai node.proyek js untuk mengimplementasikan oauth. Buat direktori bernama 'auth' dan mulai proyek ekspres.
[dilindungi email]:~$ mkdir auth[dilindungi email]:~$ cd auth
[dilindungi email]:~$ npm init -y
Menginstal Paket npm yang Diperlukan
Untuk menerapkan Google OAuth menggunakan node.js, kita perlu menginstal beberapa paket npm. Kami akan menggunakan 'passport', 'express', 'path', dan 'passport-google-oauth20'. Instal paket-paket ini menggunakan npm.
[dilindungi email]:~$ npm install express passport passport-google-oauth20 pathNode Penulisan.kode js
Pertama-tama, kita akan menulis dua halaman web html sederhana, satu dengan tombol, dan mengotorisasi pengguna saat mengklik tombol. Halaman kedua akan diotorisasi, dan pengguna akan diarahkan ke halaman yang diotorisasi setelah otorisasi. Buat file 'publik/indeks.html'.
Otorisasi Disini
Sekarang buat file 'publik/sukses.html' dengan konten berikut.
Resmi
Setelah membuat halaman web, sekarang kita akan menulis kode untuk mengizinkan pengguna menggunakan google oauth. Buat file 'indeks.js'.
// mengimpor paket yang diperlukanconst ekspres = membutuhkan('ekspres');
const paspor = membutuhkan('paspor');
const jalur = membutuhkan('jalur');
const GoogleStrategy = membutuhkan('paspor-google-oauth20').Strategi;
aplikasi const = ekspres();
//mendefinisikan parameter
// client id adalah parameter yang akan kita dapatkan dari google developer console
CLIENT_ID="xxxxxxx";
// rahasia klien juga akan diambil dari konsol pengembang google
CLIENT_SECRET=”xxxxx”;
// pengguna akan diarahkan ke CALLBACK_URL setelah otorisasi
CALLBACK_URL="http://localhost:8000/authorized";
// nomor port harus sama dengan yang ditentukan di konsol pengembang
PELABUHAN=8000;
// mengonfigurasi middleware paspor
aplikasi.gunakan (paspor.inisialisasi());
aplikasi.gunakan (paspor.sidang());
paspor.serializeUser( function(id, selesai)
selesai(null, id);
);
paspor.deserializeUser( function(id, selesai)
selesai(null, id);
);
// middleware berikut akan berjalan kapan pun paspor. Metode otentikasi dipanggil dan mengembalikan parameter berbeda yang ditentukan dalam ruang lingkup.
paspor.gunakan(GoogleStrategy baru(
clientID: CLIENT_ID,
rahasia klien: CLIENT_SECRET,
callbackURL: CALLBACK_URL
,
fungsi async(accessToken, refreshToken, profil, email, cb)
kembali cb (null, email.Indo);
));
// menyajikan halaman beranda untuk aplikasi
aplikasi.get('/', (req, res) =>
res.kirimFile(jalur.join(__dirname + '/public/index.html'));
);
// menyajikan halaman sukses untuk aplikasi
aplikasi.get('/success', (req, res) =>
res.kirimFile(jalur.join(__dirname + '/public/success.html'));
);
// pengguna akan diarahkan ke halaman google auth setiap kali mencapai rute '/google/auth'.
aplikasi.dapatkan('/google/aut',
paspor.otentikasi('google', lingkup: ['profil', 'email'])
);
// pengalihan kegagalan otentikasi didefinisikan dalam rute berikut
aplikasi.dapatkan('/diotorisasi',
paspor.otentikasi('google', failureRedirect: '/'),
(permintaan, res) =>
res.redirect('/berhasil');
);
// menjalankan server
aplikasi.dengarkan(PORT, () =>
menghibur.log(“Server berjalan pada Port” + PORT)
)
Menguji Google OAuth
Sekarang aplikasi kita sudah siap, dan kita dapat menguji apakah itu mengizinkan pengguna menggunakan google oauth. Buka direktori root dan jalankan aplikasi.
[dilindungi email]:~$ indeks simpul.jsSekarang masukkan url aplikasi Anda ke browser.
http://localhost:8000
Ini menunjukkan halaman beranda dengan tag jangkar.
Ketika kita mengklik 'Otorisasi Di Sini', itu akan diarahkan ke halaman google oauth.
Nama aplikasi Anda 'Tes' ditampilkan di halaman otentikasi Google. Saat Anda mengotorisasi akun Anda, itu akan membawa Anda ke halaman resmi.
Kesimpulan
Mengelola nama pengguna dan kata sandi untuk aplikasi web yang berbeda bukanlah tugas yang menyenangkan bagi pengguna. Banyak pengguna meninggalkan aplikasi web Anda tanpa mendaftarkan akun mereka hanya karena mereka tidak ingin mengelola kredensial. Proses otorisasi pada aplikasi web atau situs web Anda dapat disederhanakan dengan menggunakan layanan pihak ketiga seperti Google, Facebook, dll. Layanan ini mengotorisasi pengguna atas nama mereka, dan pengguna tidak perlu mengelola kredensial secara terpisah. Pada artikel ini, kami telah menerapkan protokol google oauth untuk mengizinkan pengguna menggunakan Node.js.