Definisi dan Fungsi OAuth 2.0
OAuth 2.0 adalah standar industri untuk otorisasi yang memungkinkan aplikasi pihak ketiga mendapatkan akses terbatas ke sumber daya pengguna di layanan HTTP (seperti API) tanpa harus mengetahui atau menyimpan kata sandi pengguna. Metode ini bekerja dengan cara memberikan token akses (access token) kepada aplikasi, sehingga pengguna tidak perlu memasukkan kredensial langsung ke dalam aplikasi tersebut.
Komponen Utama dalam Alur OAuth 2.0
Dalam implementasi API, terdapat empat peran utama yang harus dipahami untuk memastikan alur otentikasi berjalan dengan aman:
| Peran | Deskripsi |
|---|---|
| Resource Owner | Pengguna yang memberikan akses ke akunnya. |
| Client | Aplikasi yang meminta akses ke API. |
| Resource Server | Server yang menyimpan data API pengguna. |
| Authorization Server | Server yang memverifikasi identitas dan mengeluarkan token. |
Langkah Implementasi Teknis
Implementasi OAuth 2.0 pada API umumnya mengikuti alur Authorization Code Grant yang dianggap paling aman untuk aplikasi web. Berikut adalah tahapan teknisnya:
- Registrasi Client: Aplikasi harus terdaftar di Authorization Server untuk mendapatkan
client_iddanclient_secret. - Permintaan Otorisasi: Aplikasi mengarahkan pengguna ke Authorization Server untuk login.
- Pemberian Kode: Setelah login, server mengirimkan authorization code kembali ke aplikasi.
- Pertukaran Token: Aplikasi mengirimkan authorization code beserta
client_secretke server untuk ditukar dengan access token. - Akses API: Aplikasi menggunakan access token di dalam header HTTP (
Authorization: Bearer <token>) untuk mengakses data di Resource Server.
Keamanan Implementasi
Untuk menjaga integritas sistem, pastikan implementasi Anda selalu menggunakan protokol HTTPS pada seluruh komunikasi. Jangan pernah menyimpan client_secret di sisi klien (seperti kode JavaScript di browser) karena berisiko terekspos. Gunakan refresh token untuk memperbarui access token yang telah kedaluwarsa tanpa harus meminta pengguna melakukan login ulang secara terus-menerus.