Memahami JWT, OAuth, dan Bearer Token: Apa Bedanya dan Kapan Menggunakannya?
Eko Susilo Harjo October 8, 2024

Jika kamu pernah bekerja dengan API, kamu pasti pernah mendengar istilah seperti JWT, OAuth, dan Bearer Token. Tiga istilah ini sering muncul, tetapi tidak sedikit yang merasa bingung membedakan satu sama lain. Padahal, memahami cara kerja ketiganya sangat penting, apalagi kalau kamu sedang membangun aplikasi yang membutuhkan autentikasi dan otorisasi yang aman.
Tenang saja, kali ini kita akan membahas JWT, OAuth, dan Bearer Token dengan bahasa yang lebih manusiawi dan humor ringan. Siapkan kopi, duduk santai, dan mari kita mulai!
Apa Itu JWT (JSON Web Token)?
JWT (baca: Jey Double You Tee) adalah singkatan dari JSON Web Token. Ini adalah standar token berbasis JSON yang digunakan untuk mengirimkan informasi terotentikasi antara dua pihak—misalnya antara server dan klien. JWT terdiri dari tiga bagian utama yang dipisahkan oleh tanda titik (.), yaitu:
- Header: Bagian ini berisi informasi tentang jenis algoritma enkripsi yang digunakan. Biasanya, algoritma yang digunakan adalah HMAC atau RSA.
- Payload: Bagian ini berisi informasi atau klaim (claims) yang akan dikirimkan. Klaim ini bisa berupa informasi pengguna, seperti ID pengguna atau hak akses tertentu.
- Signature: Bagian ini digunakan untuk memverifikasi bahwa pesan tidak diubah selama perjalanan. Signature dihasilkan dengan menggabungkan header, payload, dan secret key.
Nah, JWT ini biasanya dikodekan dalam format Base64 dan terlihat seperti string acak panjang yang bikin mata berputar. Tapi jangan khawatir, sebenarnya itu adalah gabungan dari informasi penting yang dikemas dengan rapi.
Kapan Menggunakan JWT?
JWT sangat berguna dalam konteks stateless authentication, artinya server tidak perlu menyimpan sesi pengguna. Semua informasi tentang pengguna dikodekan dalam token, dan token ini dikirim bersama setiap request. Jadi, saat klien mengirimkan request, server hanya perlu memvalidasi token tersebut tanpa harus memeriksa database sesi.
Contoh penggunaan JWT:
- API yang butuh autentikasi.
- Single Page Application (SPA) yang perlu mengelola sesi pengguna tanpa membebani server.
Namun, ingat bahwa JWT tidak dienkripsi secara default, jadi jangan pernah memasukkan informasi sensitif seperti password dalam payload JWT!
Apa Itu OAuth?
Kalau JWT berperan sebagai “pembawa pesan”, maka OAuth adalah framework yang lebih kompleks dan mendalam. OAuth (Open Authorization) adalah standar yang digunakan untuk otorisasi, bukan autentikasi. Bingung? Oke, bayangkan kamu ingin mengizinkan aplikasi pihak ketiga (misalnya aplikasi workout) untuk mengakses data di akun Google milikmu, tapi kamu tidak ingin memberikan password Gmail secara langsung. Nah, OAuth memungkinkan kamu melakukan itu.
Pada dasarnya, OAuth bekerja dengan memberikan “izin” (access token) kepada aplikasi pihak ketiga untuk mengakses sumber daya pengguna tanpa membocorkan kredensial pengguna. Dalam OAuth 2.0, prosesnya biasanya melibatkan beberapa langkah, seperti:
- Pengguna masuk ke aplikasi.
- Aplikasi meminta izin untuk mengakses data pengguna dari penyedia layanan (misalnya Google, Facebook).
- Pengguna memberikan izin.
- Aplikasi menerima access token dari penyedia layanan.
- Token ini digunakan oleh aplikasi untuk mengakses data pengguna sesuai izin yang diberikan.
OAuth 2.0 adalah versi terbaru dan paling umum digunakan. Banyak layanan besar seperti Google, Facebook, GitHub, dan Twitter menggunakan OAuth 2.0 untuk otorisasi.
OAuth vs JWT: Apa Bedanya?
Pertanyaan yang sering muncul adalah, “Kalau OAuth dan JWT bisa digunakan untuk otorisasi, apa bedanya?” Nah, jawabannya adalah mereka bekerja di level yang berbeda.
- OAuth adalah framework otorisasi yang lebih luas. OAuth memungkinkan aplikasi untuk mendapatkan token otorisasi yang kemudian digunakan untuk mengakses sumber daya atas nama pengguna.
- JWT sering digunakan sebagai format token otorisasi dalam OAuth. Jadi, OAuth bisa mengeluarkan JWT sebagai access token.
Contohnya, saat menggunakan OAuth untuk login ke aplikasi menggunakan akun Google, token otorisasi yang diterima oleh aplikasi seringkali adalah JWT.
Apa Itu Bearer Token?
Bearer Token adalah jenis token yang digunakan dalam HTTP authentication. Nama “Bearer” di sini mengindikasikan bahwa siapa pun yang “membawa” token ini dapat mengakses sumber daya yang dilindungi. Ini berarti, jika kamu punya Bearer Token, kamu bisa “mengklaim” akses ke sumber daya tanpa perlu autentikasi lebih lanjut (asalkan tokennya valid).
Bearer Token ini sering kali dikirimkan dalam header HTTP seperti ini:
Authorization: Bearer <token>
Jika token yang diberikan valid, maka server akan memberikan akses. Namun, karena token ini sangat sensitif, siapa pun yang mendapatkannya bisa menggunakannya, jadi penting untuk menjaga keamanan token tersebut.
Kapan Menggunakan Bearer Token?
Bearer Token biasanya digunakan dalam konteks API. Saat klien berhasil diotorisasi (misalnya melalui OAuth), server memberikan Bearer Token yang bisa digunakan klien untuk mengakses API. Token ini sering kali memiliki masa berlaku (expired), sehingga harus diperbarui dari waktu ke waktu.
Bearer Token bisa dikombinasikan dengan JWT. Misalnya, OAuth bisa memberikan Bearer Token dalam bentuk JWT yang dikirimkan di setiap request untuk mengakses API.
Jadi, Bagaimana Semuanya Terhubung?
- JWT: Sebuah format token yang sering digunakan untuk stateless authentication dan otorisasi. Mengandung informasi terkode yang bisa diverifikasi oleh server.
- OAuth: Sebuah framework otorisasi yang memungkinkan aplikasi pihak ketiga mengakses sumber daya pengguna tanpa membocorkan kredensial. Token otorisasi yang diterima dari OAuth seringkali berupa JWT.
- Bearer Token: Sebuah mekanisme autentikasi di mana siapa pun yang membawa token ini dapat mengakses sumber daya yang dilindungi. Bearer Token sering kali berformat JWT.
Kesimpulan
Dalam dunia yang semakin bergantung pada API dan otorisasi pihak ketiga, memahami peran JWT, OAuth, dan Bearer Token sangat penting. JWT membantu membuat autentikasi lebih sederhana, OAuth memastikan otorisasi dilakukan dengan aman, dan Bearer Token menjadi solusi praktis untuk akses API.
Bayangkan JWT seperti tiket konser dengan informasi lengkap tentang tempat dudukmu, OAuth adalah petugas yang memastikan kamu punya hak untuk beli tiket, dan Bearer Token adalah gelang yang memungkinkan kamu masuk ke area VIP selama konser berlangsung. Mudah, kan?
Semoga sekarang kamu lebih paham bagaimana menggunakan ketiga teknologi ini di aplikasi yang kamu bangun. Dan ingat, jangan pernah membagikan Bearer Token kamu sembarangan.
Discover more from teknologi now
Subscribe to get the latest posts sent to your email.