API Authentication using Laravel Sanctum

Hallo, Kreatif Readers! Laravel Sanctum adalah salah satu package autentikasi dari Laravel yang dirancang khusus untuk menyediakan layanan autentikasi dan otorisasi untuk aplikasi berbasis RESTful API. Laravel Sanctum menggunakan token yang memperbolehkan 1 user memiliki beberapa token dengan batasan/scope yang berbeda-beda. Hal tersebut dapat digambarkan seperti ilustrasi berikut

ilustrasi-proses-kerja-sanctum

Fitur utama dari Laravel Sanctum adalah sebagai berikut:

1. API Token Authentication

Sanctum memungkinkan aplikasi untuk generate token API yang nantinya digunakan untuk mengakses API yang dilindungi. Setiap token dapat memiliki scope yang berbeda, tergantung pengaturan batasan API yang telah ditentukan

2. SPA Authentication

Sanctum juga mendukung autentikasi untuk SPA. Dengan menggunakan Laravel sebagai backend dan framework JavaScript modern seperti Vue.js atau React di frontend, Sanctum dapat mengelola otentikasi pengguna melalui cookie-based session.

3. Mobile Application Authentication

Selain untuk SPA, Sanctum juga dapat digunakan untuk autentikasi aplikasi mobile, memberikan fleksibilitas lebih dalam mengelola akses pengguna di berbagai platform.

Penggunaan Laravel Sanctum

1. Installasi dan konfigurasi

Install menggunakan composer

composer require laravel/sanctum

Publish konfigurasi sanctum

php artisan vendor:publish --provider="Laravel\Sanctum\SanctumServiceProvider"

Migrasi tabel yang dibutuhkan sanctum

php artisan migrate

2. Penggunaan API Token

Panggil method createToken pada model User:

$token = $user->createToken('token-name')->plainTextToken;

Token ini kemudian bisa digunakan untuk autentikasi request API dengan menyertakannya pada header Authorization:

Authorization: Bearer <token>

3. Autentikasi SPA

Untuk SPA, Sanctum menggunakan session-based authentication. Pertama, konfigurasikan middleware pada file api.php:

Route::middleware('auth:sanctum')->get('/user', function (Request $request) {
 return $request->user();
});

Studi Kasus penggunaan Laravel Sanctum

Beberapa perusahaan dan startup menggunakan Laravel Sanctum untuk menangani autentikasi API karena kemudahan dan keamanannya. Bentuk penggunaannya adalah penerpana autentikasi pada proses jual beli, dimana data yang diproses merupakan data konfidental seperti nomor telepon, nomor rekening, alamat, dll.

Reference:
[1] Tampilan IMPLEMENTASI WEB SERVICE DENGAN METODE RESTFUL PADA SISTEM PENJUALAN BARANG DI PT. WELLCOMM GROUP (budiluhur.ac.id)

[2] Laravel Sanctum - Laravel 11.x - The PHP Framework For Web Artisans

Mengenal Laravel Sanctum sebagai Solusi Otentikasi API yang Sederhana dan Efektif

Halo kreatif readers, pernahkah kamu mendengar tentang Laravel Sanctum?

Laravel Sanctum adalah salah satu paket yang dikembangkan oleh Laravel untuk menangani otentikasi pengguna melalui API. Paket ini dirancang untuk memberikan solusi otentikasi yang sederhana dan ringan, terutama untuk aplikasi Single Page Applications (SPA), aplikasi mobile, dan API sederhana. Dalam artikel ini, kita akan membahas tentang fitur, manfaat, dan cara penerapan Laravel Sanctum dalam aplikasi web modern.

Apa itu Laravel Sanctum?

Laravel Sanctum adalah paket otentikasi yang memungkinkan aplikasi untuk mengelola token autentikasi dengan cara yang sederhana dan efektif. Sanctum menawarkan dua pendekatan utama untuk autentikasi: Token API Pribadi dan Otentikasi Berbasis Cookie untuk SPA. Pendekatan pertama memungkinkan setiap pengguna aplikasi untuk membuat beberapa token API yang dapat digunakan untuk mengakses API dengan izin khusus. Pendekatan kedua memanfaatkan layanan autentikasi berbasis sesi cookie bawaan Laravel, yang sangat aman dan mudah diterapkan dalam aplikasi Single Page Application (SPA).

Fitur Utama Laravel Sanctum

  1. Token API Pribadi adalah salah satu fitur utama Laravel Sanctum. Dengan fitur ini, pengguna dapat membuat dan mengelola beberapa token API, yang masing-masing dapat diberikan kemampuan atau izin khusus. Ini sangat cocok untuk aplikasi mobile atau integrasi API pihak ketiga di mana pengguna membutuhkan beberapa token untuk berbagai tujuan.
  2. Otentikasi Berbasis Cookie untuk SPA adalah fitur lain yang diunggulkan oleh Laravel Sanctum. Fitur ini menggunakan sesi cookie untuk autentikasi, yang membuatnya sangat aman dan mudah diterapkan. Dengan cara ini, autentikasi dapat dikelola tanpa memerlukan token eksplisit di klien, sehingga menyederhanakan proses autentikasi dan meningkatkan keamanan.
  3. Manajemen token yang mudah adalah fitur penting lainnya dari Laravel Sanctum. Token dapat dibuat, dicabut, dan diperbarui dengan mudah melalui metode yang disediakan oleh Sanctum. Selain itu, kemampuan untuk mengatur token API dengan izin khusus memberikan fleksibilitas tambahan dalam mengelola akses dan keamanan API.

Manfaat Menggunakan Laravel Sanctum

  1. Kesederhanaan dan kemudahan penggunaan adalah salah satu manfaat utama menggunakan Laravel Sanctum. Integrasi Sanctum dengan aplikasi Laravel sangat mudah dan cepat, berkat dokumentasi yang baik dan mendetail yang membuat proses implementasi menjadi lebih mudah dan langsung.
  2. Keamanan adalah manfaat penting lain dari Laravel Sanctum. Sanctum menggunakan sesi cookie yang aman untuk autentikasi SPA, sehingga melindungi aplikasi dari berbagai ancaman keamanan. Selain itu, token API dapat diberikan izin khusus, yang membantu meningkatkan keamanan dengan membatasi akses berdasarkan peran atau kebutuhan spesifik.
  3. Fleksibilitas adalah keuntungan besar lainnya dari Laravel Sanctum. Paket ini mendukung berbagai jenis aplikasi, termasuk SPA, aplikasi mobile, dan API sederhana. Fleksibilitas ini membuatnya dapat digunakan untuk aplikasi skala kecil hingga besar, memberikan solusi autentikasi yang handal untuk berbagai kebutuhan pengembangan.
  4. Integrasi mendalam dengan Laravel adalah manfaat terakhir yang sangat penting. Sanctum memanfaatkan middleware dan fitur bawaan Laravel, sehingga mudah untuk diintegrasikan dengan berbagai paket dan alat dalam ekosistem Laravel. Kompatibilitas yang baik ini memastikan bahwa Sanctum dapat bekerja dengan lancar bersama komponen lain dari framework Laravel, meningkatkan produktivitas dan efisiensi dalam pengembangan aplikasi.

Cara Kerja Laravel Sanctum dalam aplikasi SPA

 

cara-kerja-laravel-sanctum

 

  1. Permintaan Token CSRF Pertama: SPA mengirim permintaan OPTIONS ke endpoint `/sanctum/csrf-cookie` untuk melakukan preflight request sebagai bagian dari mekanisme CORS, memastikan permintaan diterima dari asal yang diizinkan. Kemudian, permintaan GET dikirim ke endpoint yang sama untuk mendapatkan token CSRF (`XSRF-TOKEN`), yang dikontrol oleh `CsrfCookie Controller` dan dikirim kembali sebagai cookie oleh server.
  2. Login Pengguna: Pengguna mengirim permintaan POST ke endpoint `/api/login` dengan kredensial (misalnya, email dan password) dan menyertakan token CSRF. Jika kredensial valid, server mengotentikasi pengguna dan mengirimkan kembali cookie sesi, yang digunakan untuk mengelola sesi pengguna dan memungkinkan akses ke endpoint yang dilindungi.
  3. Akses Endpoint yang Dilindungi: Setelah login berhasil, SPA dapat mengirim berbagai permintaan (POST, GET, dll.) ke server. Semua permintaan ini menyertakan cookie sesi untuk mengotentikasi pengguna.

Komponen Laravel yang terlibat meliputi middleware CORS untuk mengatur izin permintaan lintas asal, middleware `EnsureFrontendRequestsAreStateful` untuk memastikan permintaan frontend diperlakukan sebagai stateful, middleware `VerifyCsrfToken` untuk memverifikasi token CSRF, dan `Sanctum Guard` untuk mengelola autentikasi pengguna menggunakan token. Dengan mekanisme ini, Laravel Sanctum menyediakan solusi autentikasi yang aman dan efisien bagi SPA, melindungi dari serangan CSRF dan memastikan hanya pengguna terautentikasi yang dapat mengakses endpoint API.

Referensi: Laravel Sanctum Explained  SPA Authentication oleh Nicolas Bailly, Algiola Dev Community, Paris, France.

Implementasi Elasticsearch dengan Laravel Scout

Hallo Kreatif Readers, artikel kali ini akan membahas mengenai Elasticsearch dengan Laravel Scout

Laravel Scout adalah extension package untuk framework PHP Laravel yang memimgkinkan integrasi dengan search engine seperti Elasticsearch. Dengan menggunakan Larvaravel Scout dapat dengan mudah untuk mengimplementasikan fitur pencarian dan penelususan 9search and browse)  dalam aplikasi laravel.

Fitur utama dari Laravel Scout meliputi:

  • Driver Agnostic: Scout didesain agar bisa bekerja dengan berbagai mesin pencari, seperti Algolia dan Elasticsearch, tanpa harus mengubah kode aplikasi Anda secara signifikan.
  • Pencarian Full-Text: Mendukung pencarian teks lengkap (full-text search) yang memungkinkan pengguna untuk mencari data berdasarkan kata kunci atau frasa tertentu.
  • Integrasi dengan Eloquent: Memanfaatkan ORM (Object-Relational Mapping) Laravel, yaitu Eloquent, untuk mengelola data dan mengintegrasikan fitur pencarian dengan model Eloquent.
  • Kemudahan Penggunaan: Scout menyediakan API yang sederhana untuk menentukan model mana yang harus diindeks dan bagaimana cara melaksanakan pencarian di dalamnya.

Elasticsearch adalah mesin pencari dan analisis yang bersifat open source dan terdistribusi untuk segaja jenis data, menggunakan REST dan JSON. Konsep intinya adalah indeks dokumen, pencarian teks penuh dan pemroresan data. Laravel scout memberikan solusi sederhana untuk menambahkan pencarian teks lengkap ke model eloquest.

Implementasi Elastisearch dengan LAravel Scout melibatkan beberapa langkah utama. Elasticsearch akan bertindak sebagai mesin pencari utama, sedangkan Laravel Scout akan memfasilitasi integrasi anatar aplikasi laravel dengan Elasticsearch.

Berikut langkah – langkah mengimplementasikan Elasticsearch dengan Laravel Scout

1. Install Package Laravel Scout dan Elasticsearch driver

Install Package Scout:

composer require laravel/scout

Install Elasticsearch Driver untuk Scout:

composer require babenkoivan/scout-elasticsearch-driver

2. Konfigurasi Laravel Scout

Tambahkan ScoutServiceProvider ke dalam array providers di dalam file config/app.php:

'providers' => [
 // ...
 Laravel\Scout\ScoutServiceProvider::class,
],

Tambahkan konfigurasi driver Elasticsearch ke dalam file .env:

SCOUT_DRIVER=elasticsearch
ELASTICSEARCH_HOST=localhost
ELASTICSEARCH_PORT=9200

3. Konfigurasi Model Eloquent

Implementasikan interface Searchable pada model Eloquent yang ingin Anda indeks dengan Elasticsearch:

use Laravel\Scout\Searchable;
class Artikel extends Model
{
 use Searchable;
}

Tentukan pengindeksan dan fitur pencarian dalam model dengan menentukan metode toSearchableArray():

public function toSearchableArray()
{
 $array = $this->toArray();
// Customize the searchable fields
 return $array;
}

4. Indeks Data dengan Elasticsearch

Setelah mengonfigurasi model dan konfigurasi driver Elasticsearch, Anda dapat mengindeks data dengan menggunakan perintah artisan:

php artisan scout:import "App\Artikel"

5. Implementasi Pencarian

Gunakan fitur pencarian dalam aplikasi Anda dengan menggunakan method search() pada model yang mendukung pencarian Scout:

$results = Artikel::search('kata kunci pencarian')->get();

Dengan menggunakan Laravel Scout, dapat dengan mudah menambahkan dan mengelola fitur pencarian yang kuat dalam aplikasi Laravel tanpa perlu menghadapi kompleksitas dalam mengimplementasikan mesin pencari dari awal.

Referensi: Ardian Prima Atmaja, Susilo Veri Yulianto. Pemanfaatan Elasticsearch untuk Temu Kembali Informasi Tugas Akhir: Jurnal Nasional Teknologi dan Sistem Informasi.2018
Laravel.com