dibimbing.id - Apa Itu JWT di Golang? Arti, Struktur, hingga Contoh

Apa Itu JWT di Golang? Arti, Struktur, hingga Contoh

Farijihan Putri

•

30 September 2024

•

163

Image Banner

Warga Bimbingan, pernah nggak sih kamu merasa ribet banget waktu harus bikin sistem otentikasi buat aplikasi? Login logout, cek session, dan segala macam urusan bikin kepala pening! 

Nah, salah satu solusi praktis yang bisa bikin proses otentikasi lebih simpel adalah JWT (JSON Web Token). 

Buat kamu yang belum familiar, JWT ini adalah cara paling jitu buat ngurus otentikasi pengguna, apalagi kalau kamu main di stack Golang.

Jadi, gimana sih cara kerja JWT di Golang? Apa aja sih struktur dari token ini? Dan yang paling penting, gimana cara mengimplementasikannya? 

Tenang, MinDi bakal jawab semua pertanyaan kamu dengan bahasa yang gampang dipahami, plus beberapa tips biar kamu bisa langsung praktek. Yuk, bongkar satu-satu biar kamu nggak pusing lagi soal otentikasi!


Apa Itu JWT?

JWT (JSON Web Token) adalah sebuah format token yang digunakan untuk mengamankan pertukaran data antara dua pihak, biasanya antara server dan klien, dalam aplikasi web. 

JWT berisi informasi yang dikemas dalam tiga bagian utama: header (informasi jenis token dan algoritma), payload (isi data yang ingin dikirim, misalnya user ID), dan signature (untuk memverifikasi token tidak diubah). 

Dengan JWT, server bisa memastikan siapa penggunanya tanpa harus menyimpan data session, sehingga otentikasi jadi lebih efisien dan aman, terutama di aplikasi yang skalanya besar.


Bagaimana Struktur JWT?

JWT terdiri dari tiga bagian utama yang dipisahkan oleh titik (.). Bagian pertama adalah Header, yang berisi informasi tentang tipe token dan algoritma enkripsi yang digunakan, seperti HMAC atau RSA. 

Header ini biasanya berbentuk JSON sederhana yang kemudian dienkripsi menjadi Base64URL, sehingga lebih aman saat dikirim melalui internet.

Bagian kedua adalah Payload, yaitu tempat menyimpan data yang ingin ditransfer, seperti informasi pengguna (user ID, email, atau peran) dan klaim (claims) lainnya. 

Sama seperti header, payload juga dikodekan ke dalam format Base64URL. 

Terakhir, ada Signature, yang dibuat dengan menggabungkan header dan payload menggunakan algoritma enkripsi yang telah ditentukan. 

Signature ini berfungsi untuk memastikan bahwa token tidak diubah oleh pihak yang tidak berwenang selama perjalanan dari klien ke server.


Menerapkan JWT di Golang

Sumber: Freepik

Sekarang Warga Bimbingan udah ngerti kan apa itu JWT dan gimana strukturnya? Nah, selanjutnya yang bikin seru adalah gimana sih caranya implementasi JWT di Golang. 

Kamu nggak perlu jadi hacker jago buat ngerti ini kok, cukup paham dasar-dasarnya, dan siap-siap nambah ilmu baru!

  1. Install Library JWT: Gunakan library github.com/dgrijalva/jwt-go. Ini bakal jadi andalan kamu buat bikin, menandatangani, dan memverifikasi token JWT.
  2. Buat Token JWT: Token JWT ini ibarat tiket VIP, yang isinya data penting kayak user ID, role, dll, yang dienkripsi dengan aman.
  3. Verifikasi Token JWT: Setelah bikin, token harus diverifikasi. Anggap aja kayak ngecek tiket sebelum masuk ke konser, buat pastiin itu asli dan belum diubah.
  4. Gunakan Middleware JWT: Di Golang, kita bisa pasang JWT sebagai middleware untuk proteksi rute API. Jadi, nggak sembarang orang bisa akses tanpa token yang valid.

Baca Juga: 15 Framework Populer untuk Golang Tahun 2025, Bonus Tips!


Contoh Implementasi JWT di Golang

Sekarang udah kebayang kan gimana konsep JWT di Golang? Nah, biar makin jelas, mari kita langsung masuk ke contoh implementasinya. Jangan khawatir, langkah-langkahnya nggak bakal bikin kepalamu meledak!

Yuk, lihat gimana cara bikin token JWT dan implementasinya di API yang simpel tapi powerful. Siapkan jari-jari kamu buat ngoding, Warga Bimbingan!

Berikut adalah contoh singkat implementasi JWT di Golang:

Penjelasan:

  1. Generate Token: Kita bikin token JWT dengan klaim berisi username dan waktu kedaluwarsa 5 menit. Ini semacam tiket yang dikasih ke pengguna buat akses fitur eksklusif.
  2. Verifikasi Token: Sebelum akses endpoint, token diverifikasi dulu untuk memastikan itu valid dan belum expired.
  3. Middleware: Middleware di sini berfungsi buat melindungi rute yang perlu otentikasi. Jadi kalau token nggak valid, pengguna nggak bisa akses endpoint.


Simple kan? Dengan contoh ini, kamu bisa langsung terjun dan mulai bikin API yang lebih aman dan andal dengan JWT di Golang!


7 Tips Terapkan JWT di Golang

Nah, sekarang Warga Bimbingan udah paham dasar-dasar dan contoh implementasi JWT di Golang. 

Tapi, kalau mau aplikasi kamu benar-benar aman dan efektif, ada beberapa tips penting yang harus kamu perhatikan ketika menerapkan JWT di Golang. 

Yuk, simak beberapa tips berikut ini biar aplikasi kamu nggak cuma aman, tapi juga scalable!


1. Gunakan Expiration Time yang Sesuai

JWT memungkinkan kamu untuk mengatur masa kadaluarsa token yang artinya setelah waktu tertentu, token tersebut akan dianggap tidak valid lagi. 

Penting banget buat kamu mengatur waktu kedaluwarsa ini dengan bijak. Jangan terlalu lama, tapi juga jangan terlalu pendek. 

Biasanya, token akses diatur kadaluarsa dalam 5 hingga 15 menit untuk keamanan maksimal, sementara refresh token bisa lebih panjang, mungkin beberapa hari atau minggu. 

Jadi, kalau tokennya kedaluwarsa, pengguna nggak perlu login ulang setiap beberapa menit, tapi juga nggak terus-menerus valid selamanya.


2. Simpan Token dengan Aman di Client

Token JWT ini ibarat kunci untuk masuk ke dalam aplikasi kamu. Jadi, pastikan kunci ini nggak disimpan sembarangan di sisi client

Jangan pernah simpan token JWT di local storage, karena ini rentan terhadap serangan XSS (Cross-Site Scripting). 

Sebagai gantinya, kamu bisa gunakan HttpOnly cookies yang lebih aman dan tidak bisa diakses oleh JavaScript dari browser. Dengan begitu, token tidak akan mudah dicuri oleh pihak yang tidak berwenang.


3. Gunakan HTTPS untuk Mengirim Token

Meskipun JWT sudah dienkripsi, tetap saja kamu harus mengirimkan token ini melalui jalur yang aman. 

Selalu gunakan HTTPS saat berkomunikasi antara client dan server untuk menghindari serangan MITM (Man-In-The-Middle). 

Nah, ini akan memastikan bahwa token JWT kamu tidak bisa disadap oleh pihak ketiga yang mencoba mencuri data pengguna.


4. Jangan Masukkan Informasi Sensitif di JWT

Ingat, meskipun payload JWT dienkripsi, itu masih bisa didekode oleh siapa saja. Jadi, jangan pernah memasukkan informasi sensitif seperti password atau data rahasia lainnya ke dalam payload JWT. 

JWT ini lebih cocok buat menyimpan data seperti ID pengguna, role, atau informasi non-sensitif lainnya yang diperlukan untuk otorisasi.


5. Manfaatkan Refresh Token

JWT yang kadaluarsa nggak berarti pengguna harus selalu login ulang. Kamu bisa memanfaatkan refresh token untuk memperpanjang masa aktif token akses tanpa perlu login lagi. 

Refresh token ini biasanya disimpan secara terpisah dan memiliki masa aktif lebih lama, sehingga pengguna bisa tetap terotentikasi meskipun token akses mereka sudah expired.


6. Gunakan Library yang Terpercaya

Saat mengimplementasikan JWT di Golang, penting banget buat memilih library yang sudah terpercaya dan punya banyak dukungan dari komunitas.

Library github.com/dgrijalva/jwt-go adalah salah satu yang populer dan banyak digunakan di dunia Golang. 

Pastikan kamu juga selalu memperbarui library ini untuk menghindari adanya celah keamanan dari versi lama.


7. Hati-Hati dengan Signing Algorithm

JWT mendukung berbagai algoritma penandatanganan, seperti HMAC dan RSA. Pastikan kamu menggunakan algoritma yang sesuai dengan kebutuhan aplikasi kamu. 

HMAC sering digunakan karena lebih cepat dan sederhana. Jika aplikasi kamu butuh keamanan lebih tinggi, pertimbangkan untuk menggunakan RSA atau ECDSA, yang menggunakan kunci publik dan privat.

Baca Juga: Apa Itu Golang Backend? Arti, Keunggulan, & Contoh


Siap Terapkan JWT di Golang?

Nah, setelah memahami apa itu JWT, struktur, cara implementasi, hingga tips praktisnya, sekarang kamu udah siap buat menerapkan JWT di proyek Golang kamu, kan? 

Tapi tunggu dulu! Kalau kamu pengen belajar lebih mendalam dan langsung praktek bareng para ahli, kenapa nggak ikutan Bootcamp Golang Backend Development dibimbing.id

Di sini, kamu bakal belajar bareng mentor berpengalaman yang siap bantu kamu sampai paham betul.

Lebih keren lagi, 90% alumni bootcamp ini udah berhasil dapet kerja, lho! Nggak cuma itu, ada juga penyaluran kerja dengan lebih dari 700+ Hiring Partner yang siap ngebuka peluang karier kamu. 

Jangan khawatir kalau ada materi yang belum kamu kuasai, ada fasilitas gratis mengulang kelas sampai kamu benar-benar paham.

Kamu punya pertanyaan kayak "Gimana sih cara bikin sistem otentikasi yang aman pakai JWT di proyek real?" atau "Apa yang harus diperhatikan waktu pakai JWT di Golang?", kamu bisa konsultasi gratis di sini

Dibimbing.id siap #BimbingSampeJadi backend developer handal! Jadi, tunggu apa lagi? Yuk, mulai langkah pertama kamu menuju karier Golang Backend Development yang cemerlang!


Referensi

  1. A guide to JWT authentication in Go [Buka]
  2. Implementing JWT Token Authentication in Golang [Buka]
  3. JWT in Golang — How to Implement Token-Based Authentication [Buka]

Tags

Share

Author Image

Farijihan Putri

Farijihan is a passionate Content Writer with 3 years of experience in crafting compelling content, optimizing for SEO, and developing creative strategies for various brands and industries.

Hi!👋

Kalau kamu butuh bantuan,

hubungi kami via WhatsApp ya!