A S T A C O D E

Loading

Cara Mengimplementasikan OAuth 2.0 dan Single Sign-On di Aplikasi Web
Tutorial

Cara Mengimplementasikan OAuth 2.0 dan Single Sign-On di Aplikasi Web

Admin

Author

Aug 29, 2026

Published

36

Views

Cara Mengimplementasikan OAuth 2.0 dan Single Sign-On di Aplikasi Web

Memahami OAuth 2.0 Flow

OAuth 2.0 Authorization Code Flow dengan PKCE merupakan salah satu pendekatan yang aman untuk aplikasi web. Alurnya dimulai ketika pengguna diarahkan ke provider untuk melakukan login dan memberikan izin.

Setelah berhasil, provider mengarahkan pengguna kembali ke aplikasi dengan authorization code. Code tersebut kemudian ditukar oleh server menjadi access token yang dapat digunakan untuk mengakses resource sesuai permission yang diberikan.

Setup NextAuth.js

Untuk mempermudah implementasi authentication di Next.js, gunakan NextAuth.js.

Install package dengan:

npm install next-auth

Pada Next.js App Router, buat route authentication seperti:

/api/auth/[...nextauth]/route.ts

Kemudian konfigurasi provider seperti Google dan GitHub menggunakan client ID serta client secret yang diperoleh dari developer console masing-masing provider.

Session dengan Database

Untuk aplikasi yang membutuhkan session persisten, Anda dapat menggunakan database adapter seperti Prisma atau TypeORM.

Session berbasis database memungkinkan aplikasi menyimpan informasi session secara terpusat dan memudahkan pengelolaan seperti account linking, session management, dan token lifecycle.

Gunakan konfigurasi session sesuai kebutuhan aplikasi dan hindari menyimpan informasi sensitif secara sembarangan.

Melindungi Routes

Route yang membutuhkan autentikasi harus dilindungi agar hanya dapat diakses pengguna yang memiliki session valid.

Pada Next.js App Router, middleware dapat digunakan untuk menentukan route yang membutuhkan authentication. Gunakan matcher untuk menentukan path yang harus dilindungi.

Untuk mengambil session, gunakan pendekatan server-side seperti getServerSession() pada server dan useSession() pada client component sesuai kebutuhan.

Account Linking

Aplikasi yang mendukung beberapa provider dapat menghadapi kondisi ketika satu pengguna login menggunakan Google dan GitHub dengan alamat email yang sama.

Account linking harus dilakukan dengan hati-hati. Jangan hanya mengandalkan kesamaan email tanpa memastikan bahwa akun tersebut telah terverifikasi dan provider memberikan informasi identitas yang dapat dipercaya.

Konfigurasi seperti allowDangerousEmailAccountLinking sebaiknya digunakan hanya setelah memahami risiko keamanannya.

Custom Login Page

NextAuth.js memungkinkan Anda membuat halaman login sendiri melalui konfigurasi pages.

Buat halaman seperti:

/auth/signin

Kemudian tampilkan tombol login untuk provider yang tersedia, misalnya Continue with Google atau Continue with GitHub.

Tambahkan juga penanganan error seperti OAuthAccountNotLinked dan EmailSignin, serta pastikan redirect setelah login mengarah ke halaman yang sesuai.

Praktik Keamanan OAuth

Jangan menyimpan client secret di frontend atau memasukkannya langsung ke repository. Gunakan environment variable untuk credential.

Pastikan redirect URI dikonfigurasi secara ketat, gunakan HTTPS pada production, dan validasi session serta token pada setiap request yang membutuhkan akses terproteksi.

Kesimpulan

OAuth 2.0 dengan NextAuth.js dapat menyederhanakan implementasi login dan SSO pada aplikasi Next.js. Dengan Authorization Code Flow, PKCE, session management, route protection, serta konfigurasi provider yang tepat, aplikasi dapat memiliki sistem authentication yang lebih aman dan mudah dikelola.

Cara Mengimplementasikan OAuth 2.0 dan Single Sign-On di Aplikasi Web

Looking for a professional partner?

Let's discuss how we can help your business grow with our technology solutions.

Chat with us