Tutorial Laravel 9 JWT Authentication: Pengertian JWT dan Implementasi Login & Signup API

0
1033
Tutorial Laravel 9 JWT Authentication: Pengertian JWT dan Implementasi Login & Signup API
Tutorial Laravel 9 JWT Authentication: Pengertian JWT dan Implementasi Login & Signup API

Pada tutorial ini, kita akan memperkenalkan JSON Web Token (JWT) dan menjelaskan konsep kerjanya. JWT adalah standar terbuka (RFC 7519) untuk mengamankan data dalam bentuk JSON yang dikirimkan melalui permintaan HTTP. JWT populer digunakan untuk autentikasi dan otorisasi dalam aplikasi web dan API, termasuk dalam implementasi JWT Authentication di Laravel 9.

Pengertian JSON Web Token (JWT)

JSON Web Token (JWT) adalah representasi terenkripsi dari informasi yang diberikan dalam bentuk JSON. JWT terdiri dari tiga bagian, yaitu Header, Payload, dan Signature. Bagian Header dan Payload adalah data JSON yang dikodekan menjadi bentuk Base64 URL-safe. Bagian Signature berisi tanda tangan yang digunakan untuk memverifikasi keaslian token.

Konsep Kerja JWT

1. Authentication (Autentikasi)

Ketika pengguna login, server akan menghasilkan JWT yang berisi klaim (claims) tentang identitas pengguna dan informasi tambahan. JWT ini akan dikirimkan ke pengguna sebagai token.

2. Authorization (Otorisasi)

Setelah login, pengguna akan menyertakan token JWT di setiap permintaan yang diarahkan ke server. Token JWT ini akan diverifikasi oleh server untuk memastikan keaslian dan integritasnya.

3. Token Verifikasi

Untuk memverifikasi token, server menggunakan kunci rahasia yang hanya diketahui oleh server. Dengan menggunakan kunci ini, server dapat memastikan bahwa token tidak dimanipulasi dan valid.

4. Penjagaan Keaslian

Dengan menggunakan JWT, server tidak perlu menyimpan status login pengguna di sisi server. Sebagai gantinya, status login disimpan dalam bentuk token di sisi klien. Ini memungkinkan aplikasi menjadi stateless dan memudahkan skalabilitas.

5. Pembaruan Token

Untuk mencegah token dicuri dan digunakan secara tidak sah, JWT memiliki masa berlaku (expiry time). Jika token telah habis masa berlakunya, pengguna harus meminta token baru untuk melanjutkan akses.

6. Keuntungan

Penggunaan JWT memungkinkan otorisasi antar domain, mengurangi beban server dalam menyimpan sesi, dan memungkinkan berkomunikasi antar layanan yang aman dan terenkripsi.

Implementasi Laravel 9 JWT Authentication: API Login & Signup

Langkah 1: Instalasi Laravel dan Konfigurasi Database

Pastikan Anda telah menginstal Laravel 9 dan mengkonfigurasi file .env dengan pengaturan database yang sesuai.

Langkah 2: Instalasi Diperlukan

Instal paket JWT dan diperlukan menggunakan Composer:

Publish konfigurasi JWT:

Langkah 3: Migrasi Tabel dan Konfigurasi Model User

Jalankan migrasi untuk menambahkan kolom ke tabel users:

Tambahkan use JWTSubject dan implementasikan method-method yang diperlukan pada model User (app/Models/User.php):

Langkah 4: Konfigurasi JWT

Buka file config/auth.php, dan sesuaikan guard dan provider untuk menggunakan jwt:

Langkah 5: Buat API Route dan Controller

Tambahkan route dan controller untuk login dan signup di file routes/api.php:

Buat controller AuthController dengan perintah:

Kemudian pada controller, tambahkan logika login dan signup:

Langkah 6: Uji API

Anda sekarang dapat menguji API dengan menggunakan endpoint login dan signup yang telah dibuat:

  • Untuk login, kirimkan permintaan POST ke /api/login dengan data email dan password.
  • Untuk signup, kirimkan permintaan POST ke /api/signup dengan data name, email, dan password.

Kesimpulan

Dalam tutorial ini, Anda telah belajar cara mengimplementasikan JWT Authentication di Laravel 9 untuk mengamankan API. Dengan menggunakan JWT, Anda dapat membuat login dan signup API endpoints yang aman dan efisien. Penggunaan JWT memungkinkan autentikasi dan otorisasi yang aman dalam aplikasi web dan API, serta menjaga keaslian dan integritas data yang dikirim melalui permintaan HTTP. Dengan cara ini, Anda dapat membangun aplikasi web yang lebih aman, efisien, dan skalabel. Selamat mencoba!

LEAVE A REPLY

Please enter your comment!
Please enter your name here