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

Pembuatan Login dengan Laravel Socialite

Hai kreatif readers, kali ini saya akan membahas mengenai laravel socialite yang digunakan pada proses login.

Apa itu Laravel Socialite?

Laravel socialite adalah package laravel yang memudahkan penerapan SSO dengan melakukan integrasi autentikasi menggunakan berbagai sosial media. Dengan penggunaan package ini memudahkan pengguna ketika login ke dalam aplikasi dengan salah satu akun sosial media yang telah dimilikinya, sehingga pengguna tidak perlu mengingat banyak akun (username dan password).

Fitur pada Laravel Socialite

  • OAuth Authentication, memanfaatkan protokol OAuth yang aman untuk otentikasi pengguna. Komunikasi antara aplikasi dan platform sosial media dienkripsi untuk melindungi kredensial pengguna dan tidak memaparkannya ke aplikasi. Dengan alur otentikasi ini, memastikan keamanan data pengguna terlindungi.
  • Simple Integration, Laravel Socialite menyediakan API yang mudah diimplementasi pada proses login. Antarmuka sederhana memudahkan tim pengembang untuk melakukan konfigurasi proses autentikasi tanpa harus menulis kode yang rumit.
  • Multiple Provides, Laravel Socialite mendukung berbagai sosial media dan penyedia OAuth, seperti Facebook, Twitter, Google, GitHub, LinkedIn, Yahoo, dan lain sebagainya. Untuk itu aplikasi dapat menyediakan beberapa pilihan login dengan sosial media.

Langkah-langkah Penggunaan Laravel Socialite

Berikut ini akan dijelaskan beberapa langkah penggunaan Laravel Socialite dan metode-metode yang ada pada Laravel Socialite:

A. Installasi dan Konfigurasi

1. Pertama-tama, tentukan penyedia OAuth yang akan digunakan. Selanjutnya dapatkan kredensial dari penyedia, untuk nantinya disimpan pada konfigurasi Laravel Socialite.

2. Install package laravel socialite melalui composer:

composer require laravel/socialite

3. Lanjut pada bagian konfigurasi, pafa file ‘config/services.php’ tambahkan konfigurasi kredensial menggunakan key yang telah didapatkan dari penyedia, seperti berikut ini:

'github' => [
 'client_id' => env('GITHUB_CLIENT_ID'),
 'client_secret' => env('GITHUB_CLIENT_SECRET'),
 'redirect' => 'http://example.com/callback-url',
],

4. Lanjut pada bagian konfigurasi, pafa file ‘config/services.php’ tambahkan konfigurasi kredensial menggunakan key yang telah didapatkan dari penyedia, seperti berikut ini:

'github' => [
 'client_id' => env('GITHUB_CLIENT_ID'),
 'client_secret' => env('GITHUB_CLIENT_SECRET'),
 'redirect' => 'http://example.com/callback-url',
],

B. Autentikasi

1. Lakukan 2 kali routing yaitu untuk redirecting user ke OAuth provider, dan untuk receiving callback dari provider setelah proses autentikasi. Berikut contoh routes authentication:

use Laravel\Socialite\Facades\Socialite;
 
Route::get('/auth/redirect', function () {
 return Socialite::driver('github')->redirect();
});
 
Route::get('/auth/callback', function () {
 $user = Socialite::driver('github')->user();
 
 // $user->token
});

2. Setelah data pengguna diambil dari OAuth provider, tentukan apakah pengguna tersebut ada di database aplikasi lalu otentikasi pengguna tersebut.

use App\Models\User;
use Illuminate\Support\Facades\Auth;
use Laravel\Socialite\Facades\Socialite;
 
Route::get('/auth/callback', function () {
 $githubUser = Socialite::driver('github')->user();
 
 $user = User::updateOrCreate([
 'github_id' => $githubUser->id,
 ], [
 'name' => $githubUser->name,
 'email' => $githubUser->email,
 'github_token' => $githubUser->token,
 'github_refresh_token' => $githubUser->refreshToken,
 ]);
 
 Auth::login($user);
 
 return redirect('/dashboard');
});

3. Atur scopes untuk menentukan hak akses pengguna menggunakan scopes metode seperti berikut:

use Laravel\Socialite\Facades\Socialite;
 
return Socialite::driver('github')
 ->scopes(['read:user', 'public_repo'])
 ->redirect();

C. Retrieving User Details

Setelah pengguna dialihkan kembali ke autentikasi  pada aplikasi, maka data detail pengguna yang dibawa dapat dialmbil menggunakan metode user. Objek yang dikembalikan dengan metode user tersebut terdiri dari berbagai property dan method  mengenai informasi detail data pengguna, yang dapat disimpan pada database aplikasi. Berikut contoh detail data pengguna yang dikembalikan ke aplikasi dari penyedia OAuth:

use Laravel\Socialite\Facades\Socialite;
 
Route::get('/auth/callback', function () {
 $user = Socialite::driver('github')->user();
 
 // OAuth 2.0 providers...
 $token = $user->token;
 $refreshToken = $user->refreshToken;
 $expiresIn = $user->expiresIn;
 
 // OAuth 1.0 providers...
 $token = $user->token;
 $tokenSecret = $user->tokenSecret;
 
 // All providers...
 $user->getId();
 $user->getNickname();
 $user->getName();
 $user->getEmail();
 $user->getAvatar();
});

Kesimpulan

Penggunaan Laravel Socialite ini bermanfaat untuk digunakan pada aplikasi yang menargetkan banyak pengguna dengan kriteria pengguna umum, terutama untuk para pengguna yang tidak ingin membuat akun baru. Pengguna dapat masuk ke aplikasi  dengan akun media sosial yang telah dimiliki. Hal ini tentunya bisa mempersingkat proses login ataupun registrasi pengguna, dan dapat meningkatkan pengalaman bagi pengguna. Namun, penting untuk mempertimbangkan penggunaan package ini sesuai kebutuhan spesifikasi aplikasi yang sedang dibangun.

Referensi:
Upadhyay, Mayur. Laravel Socialite for Social Media Authentication: A Comprehensive Guide. 2024. WPWEB IFOTECH.
Laravel.com

Penjadwalan Task Otomatis Menggunakan Laravel Scheduler

Hallo, Kreatif Readers! Sebagai strategi dalam menghemat waktu dan tenaga, fitur Laravel Scheduler merupakan salah satu tools yang efektif dalam otomatisasi proses development. Fitur ini biasa digunakan untuk pembersihan cache serta melakukan backup website secara berkala. Selain itu, beberapa fungsi lain seperti sinkronisasi data eksternal serta pengiriman email berkala juga memungkinkan dilakukan menggunakan Laravel Scheduler.

Apa itu Laravel Scheduler?

Mengutip dari situs resmi Laravel, Task Scheduler merupakan salah satu fitur dari framework Laravel yang memungkinkan untuk menjalankan tugas secara otomatis pada waktu tertentu. Umumnya fitur ini diterapkan task yang harus dijalankan secara rutin dan berulang, sehingga tidak perlu lagi dijalankan secara manual.

Mengapa harus Laravel Scheduler?

Beberapa manfaat utama menggunakan Laravel Scheduler adalah:

  1. Pengaturan yang mudah: Anda dapat mendefinisikan task terjadwal hanya dengan beberapa baris code.
  2. Pembuatan Task yang Lebih Mudah: Laravel menyediakan berbagai metode untuk menjadwalkan tugas seperti menjalankan artisan command, menjalankan closure, atau bahkan menjalankan system command
  3. Pengaturan Frekuensi yang Fleksibel: Anda dapat dengan mudah mengatur frekuensi tugas seperti setiap menit, setiap jam, harian, mingguan, dan seterusnya.
  4. Logging dan Monitoring: Laravel Scheduler memungkinkan logging dan monitoring dari tugas yang dijalankan, sehingga Anda dapat memastikan semua tugas berjalan sesuai rencana.

Contoh penggunaan Laravel Scheduler

Berikut merupakan contoh penggunaan Laravel Scheduler untuk melakukan backup database setiap minggu/weekly.

1. Buat command untuk Backup

php artisan make:command BackupDatabase

2. Mendifinisikan logic Backup di command

Buka file BackupDatabase.php dan edit metode handle:

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Illuminate\Support\Facades\Storage;

class BackupDatabase extends Command
{
 protected $signature = 'backup:database';
 protected $description = 'Backup the database';

 public function __construct()
 {
 parent::__construct();
 }

 public function handle()
 {
 $filename = "backup-" . now()->format('Y-m-d-H-i-s') . ".sql";
 $command = "mysqldump --user=" . env('DB_USERNAME') .
 " --password=" . env('DB_PASSWORD') .
 " --host=" . env('DB_HOST') .
 " " . env('DB_DATABASE') . " > " . storage_path('app/' . $filename);

 $returnVar = NULL;
 $output = NULL;

 exec($command, $output, $returnVar);

 if ($returnVar != 0) {
 $this->error('Database backup failed');
 } else {
 $this->info('Database backup was successful');
 }
 }
}

3. Definisikan jadwal Backup

Setelah membuat command, Anda perlu menjadwalkannya di app/Console/Kernel.php. Tambahkan tugas ini ke metode schedule untuk menjalankannya setiap minggu.

protected function schedule(Schedule $schedule)
{
 $schedule->command('backup:database')->weekly();
}

Selain itu, Anda juga dapat menentukan waktu tertentu untuk menjalankan backup, contohnya setiap hari Senin pukul 02.00

protected function schedule(Schedule $schedule)
{
 $schedule->command('backup:database')->weeklyOn(1, '02:00'); // Setiap Senin jam 02:00
}

Anda dapat melakukan test untuk menjalankan scheduler menggunakan perintah berikut

php artisan schedule:work

4. Jalankan Laravel Scheduler pada server

Untuk menjalankan scheduler, Anda hanya perlu menambahkan cron configuration pada server untuk menjalankan perintah the schedule:run pada waktu yang ditentukan. Berikut adalah syntax yang dibutuhkan

* * * * * cd /path-to-your-project && php artisan schedule:run >> /dev/null 2>&1

5. Verifikasi Laravel Scheduler dengan melakukan Logging dan Monitoring

Berikut adalah perintah untuk melihat daftar semua tugas yang telah dijadwalkan di Laravel Scheduler

php artisan schedule:list

Tedapat beberapa variable yang akan ditampilkan, antara lain:

  • Expression: Menunjukkan ekspresi cron untuk tugas tersebut.
  • Command: Perintah yang dijalankan.
  • Next Due: Waktu berikutnya tugas dijadwalkan untuk dijalankan.
  • Previous: Waktu sebelumnya tugas dijalankan.
  • Description: Deskripsi singkat tentang tugas.

Selain perintah di atas, Laravel Scheduler juga memungkinkan Anda untuk memonitor dan log setiap tugas yang dijalankan. Anda dapat menggunakan metode ->sendOutputTo untuk mengarahkan output ke file log menggunakan perintah berikut:

$schedule->command('backup:run')->daily()->sendOutputTo(storage_path('logs/backup.log'));

Kesimpulan

Laravel Scheduler adalah alat yang sangat berguna untuk mengotomatisasi berbagai tugas dalam aplikasi web Anda. Dengan menggunakan Laravel Scheduler, Anda dapat mengelola tugas terjadwal dengan cara yang lebih terstruktur dan mudah dipahami, meningkatkan produktivitas dan efisiensi pengembangan aplikasi Anda. Mengingat kemudahan pengaturannya, fleksibilitas, dan fitur logging yang disediakan, Scheduler menjadi salah satu fitur esensial yang layak dipelajari dan digunakan dalam proyek Laravel.

Reference:
[1] https://laravel.com/docs/11.x/scheduling
[2] Cara Menjalankan Laravel Scheduler untuk Otomatisasi Cron Job (idwebhost.com)

Meningkatkan kinerja aplikasi dengan laravel octane

Hallo, Kreatif Readers!! Artikel kali ini akan membahas tentang kinerja aplikasi

Kinerja aplikasi adalah aspek yang sangat penting dalam pengembangan aplikasi. Kinerja yang baik memastikan aplikasi berjalan cepat, responsif dan meningkatkan kepuasan pengguna dan efisiensi operasional

Laravel Octane adalah salah satu terobosan terbaru dalam dunia pengembangan aplikasi web menggunakan framework Laravel. Laravel octame dirangcang untuk meningkatkan kinerja aplikasi, menjadikannya lebih cepat, lebih efisien dan lebih responsif daripada sebelumnya.

Bagaimana cara menggunakan Laravel Octane?

Menggunakan Laravel Octane memerlukan beberapa langkah konfigurasi awal. Berikut adalah langkah – langkah umum untuk mengaktifkan Laravel Octane dalam projek yang sedang dikerjakan:

1. Instalasi Laravel Octane

Instal Laravel Octane dengan menggunakan Composer

composer require laravel/octane

2. Konfigurasi Octane

Setelah instal Laravel Octane, langkah berikutnya adalah melakukan konfigurasi.

php artisan octane:install

ini akan membuat berkas octane.php di directory config

3. Konfigurasi server dan worker

Dalam berkas octane.php, anda dapat melakukan konfigurasi server yang akan digunakan oleh Laravel Octane ( Misalnya, Swoole atau RoadRunner) dan jumlah worker yang akan dijalankan.

'server' => env('OCTANE_SERVER', 'swoole'), 'workers' => env('OCTANE_WORKERS', 4),

4. Aktifkan Mode Octane

Setelah melakukan konfigurasi Laravel Octane, berikutnya aktifkan dengan menjalankan perintah berikut

php artisan octane:start

Setelah melakukan tahapan di atas aplikasi Laravel akan berjalan dalam mode Octane

5. Uji Kinerja Aplikasi

Setelah mengaktifkan Laravel Octane, sangat penting untuk menguji kinerja aplikasi untuk memastikan bahwa perubahan tersebut memberikan hasil yang diharapkan

Manfaat Menggunakan Laravel Octane

  • Pengurangan waktu respons, dengan menjaga aplikasi tetap berada di memori dan mengelola resource secara lebih efisien, Ocatne dapat mengurangi latency dan meningkatkan kecepatan respons aplikasi
  • Penghapusan overhead reinisialisasi, overhead yang biasanya terjadi karena reinisialisasi framework laravel pada setiap request dapat dihilangkan, mengurangi beban CPU dan mempercepat waktu eksekusi
  • Konfigurasi yang mudah, octane dirancang untuk itegrasi yang dengan aplikasi Laravel, dengan konfigurasi yang mudah melalui file konfigurasi config / octane.php

Kinerja aplikasi adalah salah satu faktor penting yang dapat mempengaruhi banyak aspek teknis. Dengan memperhatikan optimasi kinerja, pegembang dapat memastikan aplikasi tidak hanya cepat dan responsif, tetapi juga efisien, stabil dan mampu memenuhi ekspektasi pengguna dalam berbagai kondisi. Menggunakan Laravel Octane untuk aplikasi adalah langkah yang tepat untuk meningkatkan kinerja aplikasi yang optimal

 

Referensi : Laravel octane

 

Penggunaan CRUD Generator pada Laravel

Hallo kreatif readers..
Deadline yang singkat merupakan tantangan yang besar bagi para penyedia jasa pembuatan aplikasi sehingga banyak masalah yang dapat timbul, dimulai dari aplikasi yang tidak dapat selesai sempurna dan keterlambatan selesainya project. Untuk mengatasi masalah tersebut, kita perlu tahu mengenai Laravel package untuk mendesain dan generate aplikasi siap pakai.

Salah satu package itu adalah CRUD generator menggunakan Laravel yang dapat memudahkan programmer dalam membuat operasi CRUD secara otomatis. Berikut ini beberapa manfaat menggunakan CRUD generator:

  1. Waktu pengembangan yang lebih singkat, membutuhkan waktu kurang lebih 1-2 menit untuk membuat CRUD apps.
  2. Coding yang dihasilkan konsisten dan terstruktur, sehingga memudahkan pada saat pemeliharaan dan kolaborasi tim pengembang.
  3. CRUD generator biasanya sudah diuji dan dioptimalkan, sehingga mengurangi kemungkinan adanya bug atau kesalahan.

Beberapa contoh alat CRUD generator:
– Laravel Artisan untuk PHP Laravel.
– Rails Scaffold untuk Ruby on Rails.
– Django Admin untuk Python Django.

Langkah-langkah penggunaan CRUD generator di Laravel
generator-builder

  1. Pertama, pastikan Laravel sudah terinstal. Selanjutnya install paket CRUD generator, seperti InfyOm Laravel Generator.
    composer create-project --prefer-dist laravel/laravel myapp
    cd myapp
    composer require infyomlabs/laravel-generator
    composer require laravel/ui
    php artisan ui vue --auth
  2. Publikasikan file vendor untuk konfigurasi CRUD generator.
    php artisan vendor:publish --provider="InfyOm\Generator\InfyOmGeneratorServiceProvider"
    php artisan vendor:publish --provider="InfyOm\AdminLTETemplates\AdminLTETemplatesServiceProvider"
  3. Pastikan konfigurasi database di .env sudah sesuai dengan database yang akan digunakan.
    DB_CONNECTION=mysql
    DB_HOST=127.0.0.1
    DB_PORT=3306
    DB_DATABASE=my_database
    DB_USERNAME=root
    DB_PASSWORD=
  4. Membuat CRUD dengan Generator. Misalnya: membuat CRUD untuk Post. Buat model dan migrasi menggunakan generator.

    php artisan infyom:scaffold Post --fromTable --tableName=posts
    
  5. Jalankan migrasi untuk membuat tabel posts di database.
    php artisan migrate
    
  6. Selanjutnya generator akan membuat semua file yang diperlukan (model, controller, views, dan route). Kemudian programmer dapat mengakses fitur CRUD di browser dengan menuju URL yang sesuai, misalnya:
    http://localhost:8000/posts
  7. Kemudian sesuaikan dan tambahkan logika spesifik sesuai kebutuhan aplikasi. Ini bisa mencakup validasi tambahan, otentikasi, otorisasi, atau fitur lain yang diperlukan.
  8. Lakukan pengujian semua operasi CRUD untuk memastikan bahwa semua fungsi bekerja dengan baik dan tidak ada bug.

Kesimpulan
Penggunaan CRUD generator sangat bermanfaat dalam pengembangan aplikasi berbasis basis data. Tidak hanya meningkatkan produktivitas dan efisiensi tim pengembang, tetapi juga memastikan kualitas kode yang lebih konsisten dan terstruktur. Dengan otomatisasi pembuatan kode dasar, pengembang dapat lebih fokus pada pengembangan fitur-fitur yang lebih kompleks pada aplikasi.

Referensi:
[1] Suryo Atmojo, Ruli Utami, Suzana Dewi, Nurwahyudi Widhiyanta, Nur Ali Sholikin, “Pengembangan Generator Aplikasi Web CRUD Builder Menggunakan Laravel”, Teknik Informatika, Universitas Wijaya Putra.
[2] CRUDGenerator-backpackforlaravel

Penggunaan Laravel dalam mencegah serangan XSS (cross-site scripting)

Hallo, Kreatif Readers! Saat ini, banyak situs yang memanfaatkan konten client-server (sebagian besar ditulis dalam JavaScript) untuk menambah user experience. Sebaliknya, tren ini juga telah memperluas keberadaan dan frekuensi serangan cross-site scripting (XSS).

XSS sendiri merupakan serangan injeksi kode pada sisi klien dengan menggunakan sarana halaman website atau web aplikasi. Peretas akan mengeksekusi script berbahaya di browser dengan cara memasukkan kode berbahaya ke halaman web atau web aplikasi yang sah. Serangan ini dapat dilakukan menggunakan JavaScript, VBScript, ActiveX, Flash, dan bahasa sisi klien lainnya.

Kerentanan ini memungkinkan pencurian terhadap identitas pengguna, melewati batasan sistem, serangan malware, dll. Reflected XSS dieksekusi melalui browser dan terjadi jika website menyediakan tempat bagi pengguna untuk melakukan inputan.

Pada dasarnya terdapat tiga jenis serangan XSS yaitu:

  1. Stored XSS(Persistent XSS) merupakan jenis XSS yang paling merusak. Dalam stored XSS, script jahat yang disuntikkan akan disimpan secara permanen di server target, seperti database, forum pesan, visitor log, dan lain-lain.
  2. Reflected XSS(Non-persistent XSS) terjadi ketika skrip berbahaya dipantulkan dari web aplikasi ke browser korban.
  3. DOM-based XSS, serangan ini terjadi jika webaplikasi menulis data ke Document Object Model(DOM) tanpa sanitization yang tepat. Penyerang dapat memanipulasi data ini untuk memasukkan kontenXSS pada halaman webseperti kode Javascript yang berbahaya.

Berikut adalah data flow XSS Attack:

xss

Berdasarkan gambar diatas dapat diketahui serangan XSS dilakukan dengan memasukan script ke dalam inputan yang akan diolah oleh website untuk disimpan ke dalam database yang akan ditampilkan pada website yang diakses oleh user.

Laravel sendiri telah dilengkapi fitur-fitur yang dapat mencegah terjadinya serangan XSS, diantaranya adalah:

Escape Output dengan Blade Templating

Blade secara otomatis akan melakukan escape karakter khusus HTML pada data yang ditampilkan dengan menggunakan sintaks Blade {{ }} atau {!! !!} saat menampilkan data dari sumber eksternal pada tampilan Blade. Contoh sintaksnya adalah:

<p>{{ $user->name }}</p>

Form Request Validation

Gunakan fitur validasi Laravel untuk memastikan bahwa input yang diterima dari pengguna telah divalidasi dengan benar sebelum digunakan dalam aplikasi. Contoh sintaksnya adalah:

public function store(Request $request)
{
 $validatedData = $request->validate([
 'name' => 'required|string|max:255',
 'email' => 'required|email',
 ]);

 save()
}

HTML Purifier

Fitur ini berfungsi sebagai filtering input HTML yang masuk dari pengguna. Contoh sintaksnya adalah:

use HTMLPurifier;

$purifier = new HTMLPurifier();
$cleanHtml = $purifier->purify($html);

Content Security Policy (CSP)

Terapkan kebijakan keamanan konten (CSP) di aplikasi untuk membatasi jenis konten yang diizinkan untuk dimuat pada halaman web Anda. Contoh sintaksnya adalah:

header("Content-Security-Policy: default-src 'self'");

Dengan menerapkan langkah-langkah di atas, developer dapat meningkatkan perlindungan terhadap serangan XSS di aplikasi Laravel. Selain itu, selalu penting untuk secara teratur memperbarui framework Laravel dan dependensinya untuk mendapatkan perlindungan keamanan terbaru.

Reference:

View of Analisis Implementasi Laravel 9 Pada Website E-Book Dalam Mengatasi N+1 Problem Serta Penyerangan Csrf dan Xss (unity-academy.sch.id)

View of ANALISIS CROSS-SITE SCRIPTING (XSS) INJECTION – REFLECTED XSS AND STORED XSS MENGGGUNAKAN FRAMEWORK OWASP 10 (pnk.ac.id)

Penerapan SEO (Search Engine Optimization) pada Website Menggunakan Laravel

Hallo kreatif readers..
Dalam era digital saat ini, penting bagi pemilik situs web untuk memastikan bahwa situs mereka mudah ditemukan oleh mesin pencari seperti Google. Salah satu cara terbaik untuk mencapai ini adalah dengan menerapkan praktik SEO (Search Engine Optimization) yang efektif. Dalam blog ini akan dibahas bagaimana meningkatkan SEO situs web dengan menggunakan framework Laravel, yang merupakan salah satu framework PHP yang paling populer.

Apa sih SEO (Search Engine Optimization)? 
SEO (Search Engine Optimization) adalah salah satu teknik untuk optimalisasi mesin pencarian seperti Google menemukan website yang sudah dibuat berada pada peringkat teratas atau halaman pertama. Tujuan utamanya adalah membuat situs web lebih mudah ditemukan oleh pengguna yang mencari informasi dengan relevan.
1

  1. SEO dikategorikan menjadi tiga komponen utama:
    SEO pada halaman, yang dilakukan dalam halaman dan konten situs web (misal: optimalisasi judul halaman, gambar, deskripsi meta, tag header, kualitas konten, dan penempatan kata kunci)
  2. SEO di luar halaman, yang dilakukan di luar situs web untuk meningkatkan otoritas, reputasi, dan peringkatnya (misal: pembuatan tautan, media sosial, penyebutan merk, dan kutipan lokal)
  3. SEO teknis, yang dilakukan untuk memastikan mesin pencari seperti Google dapat menelusuri, mengindeks, dan preview situs web secara efisien (misal: struktur situs web, URL, kecepatan situs, dan keramahan seluler)

Laravel, sebagai framework PHP yang populer, menyediakan banyak fitur yang mendukung praktik SEO. Beberapa cara untuk meningkatkan SEO dalam proyek Laravel yaitu:

  1. Optimasi URL
    Salah satu langkah pertama yang dapat dilakukan adalah dengan memastikan URL situs web mudah dibaca dan mengandung kata kunci yang relevan. Dalam Laravel dapat menggunakan routing yang bersih dan deskriptif untuk mencapainya. Pastikan untuk menggunakan kata kunci dalam URL, tetapi hindari over-optimasi.
    Contoh: Daripada menggunakan domain.com/page?id=123, lebaih baik gunakan domain.com/product-name
  2. Penggunaan Metadata
    Metadata seperti meta deskripsi, judul, dan tag lainnya sangat penting untuk SEO. Pada framework Laravel ini, dapat ditambahkan metadata ke halaman-halaman dengan menggunakan template blade. Pastikan untuk membuat deskripsi meta yang menarik dan relevan untuk setiap halaman.
    Contoh: <title>Akhdani Reka Solusi</title>
  3. Pemilihan Kata Kunci
    Identifikasi kata kunci yang relevan dan pastikan untuk menggunakannya dalam konten situs web yang dibuat, termasuk judul halaman, gambar, dan deskripsi meta. Gunakan alat-alat seperti Google Keyword Planner untuk menemukan kata kunci yang paling relevan.
    Contoh: gunakan kata kunci “software house company” dalam deskripsi website.
  4. Pengoptimalan Kecepatan
    Kecepatan situs web adalah faktor penting dalam peringkat SEO. Pastikan situs Laravel memuat dengan cepat untuk mengoptimalkan gambar, mengurangi pemanggilan server, dan menggunakan teknik caching.
    Contoh: gunakan Laravel Mix untuk mengkompilasi asset dan cache hasil permintaan.
    Contoh: Mendapatkan backlink dari situs fashion terkemuka dengan anchor textsoftware house“.
  5. Optimalkan Penggunaan Teknologi
    Pastikan penggunaan teknologi di dalam Laravel tidak menghambat pengindeksan oleh mesin pencari.
    Contoh: gunakan JavaScript dengan bijak dan pastikan konten dapat diakses oleh crawler.
  6. Pemeliharaan dan Pembaruan Konten
    Perbarui konten secara teratur untuk tetap relevan dan tambahkan konten baru untuk meningkatkan otoritas situs.
    Contoh: Tulis ulasan website, tambahkan artikel blog tentang tren mode terbaru

Kesimpulan
Dengan menerapkan SEO pada website, dapat meningkatkan visibilitas situs web Laravel dalam hasil pencarian Google. Namun SEO adalah proses yang berkelanjutan, jadi pastikan untuk terus memantau dan memperbarui strategi sesuai kebutuhan. Dengan melakukan ini, website akan mencapai peringkat yang lebih tinggi dalam hasil pencarian dan lebih banyak yang menelusuri situs website anda.

Referensi:
[1] Halilintar, R. B., & Ariyus, D. (2018). Implementasi SEO ( Search Engine Optimization ) Pada Website Agc ( Auto Generated Content ) Untuk Meningkatkan Serp ( Search Engine Result Page ) Studi Kasus : Website Gallery (pp. 13–18).
[2] Riyanto, A. (2018). Analisis Dan Penerapan Search Engine Optimization Pada Website Menggunakan Metode White Hat Seo. Jurnal Teknologi Informasi,1.

Mengenal Single Sign-On (SSO) dengan Keycloak

Halo kreative readers, tahu kah kamu bahwa dalam era digital yang semakin berkembang, keamanan informasi menjadi hal yang sangat penting bagi pengguna dan penyedia layanan. Di tengah perjalanan ini, konsep Single Sign-On (SSO) telah menjadi solusi yang semakin populer untuk mengelola otentikasi pengguna dengan efisien dan aman. Salah satu alat yang menonjol dalam mendukung SSO adalah Keycloak, sebuah platform open-source yang dirancang untuk mengelola identitas dan manajemen akses secara terpusat. Pada kesempatan kali ini mari kita lihat lebih dalam tentang bagaimana Keycloak dan SSO bekerja bersama-sama untuk memberikan solusi identifikasi yang aman dan nyaman.

Pengertian Keycloak

Keycloak adalah platform open-source yang dikembangkan oleh Red Hat untuk manajemen identitas dan akses. Dirancang untuk memenuhi kebutuhan aplikasi modern, Keycloak menyediakan berbagai fitur termasuk otentikasi multi-faktor, manajemen akses berbasis peran, dan tentu saja, dukungan SSO. Dengan Keycloak, organisasi dapat mengelola otentikasi pengguna, otorisasi, dan administrasi identitas dengan mudah dan efisien.

Konsep Single Sign-On (SSO)

SSO adalah sebuah mekanisme otentikasi yang memungkinkan pengguna untuk login hanya sekali dan mendapatkan akses ke berbagai aplikasi atau layanan tanpa perlu memasukkan kredensial mereka lagi saat mengakses sumber daya lain yang terhubung. Dengan SSO, pengguna dapat menghindari kebingungan dan kerumitan yang terkait dengan pengelolaan banyak kredensial login.

Cara Keycloak Mendukung SSO

SSO

Keycloak menyediakan infrastruktur otentikasi yang kuat yang memungkinkan integrasi mudah dengan aplikasi atau layanan yang ada. Dengan mengimplementasikan protokol OpenID Connect (OIDC) di atas protokol OAuth 2.0, Keycloak menghasilkan token otentikasi yang digunakan untuk mengidentifikasi pengguna secara aman saat mengakses aplikasi yang terhubung. Pengguna hanya perlu login sekali ke Keycloak, dan token yang diberikan akan digunakan untuk mengotentikasi mereka secara otomatis saat mengakses aplikasi atau layanan lain yang terhubung.

Keuntungan Menggunakan Keycloak dan SSO

1. Kenyamanan Pengguna

SSO memungkinkan pengguna untuk mengakses berbagai aplikasi dengan satu login, meningkatkan kenyamanan dan efisiensi.

2. Keamanan yang Ditingkatkan

Dengan mekanisme otentikasi yang terpusat dan token yang dienkripsi, Keycloak dan SSO membantu meningkatkan keamanan identifikasi pengguna.

3. Manajemen Identitas yang Efisien

Keycloak menyediakan antarmuka administrasi yang kuat untuk mengelola pengguna, peran, dan kebijakan akses secara terpusat, menyederhanakan manajemen identitas di seluruh organisasi.

Kesimpulan

Dalam dunia yang semakin terhubung secara digital, keamanan dan kenyamanan dalam identifikasi sangatlah penting. Dengan menggunakan Keycloak dan SSO, organisasi dapat mengimplementasikan solusi otentikasi yang kuat dan efisien untuk pengguna mereka. Dengan demikian, Keycloak menjadi salah satu pilihan terbaik untuk memenuhi kebutuhan identifikasi yang kompleks dalam lingkungan modern yang terus berkembang.

Referensi : 
1) K. Sergey, "The Comparative Analysis of Technologies and Software for Single Sign-On," 2023 19th International Asian School-Seminar on Optimization Problems of Complex Systems (OPCS), Novosibirsk, Moscow, Russian Federation, 2023, pp. 44-47. 
2) Keahey K, Anderson J, Sherman M, Hammock C, Zhen Z, Tillotson J, Bargo T, Long L, Ul Islam T, Babu S, Zhang H and Halbach F. CHI-in-a-Box: Reducing Operational Costs of Research Testbeds. Practice and Experience in Advanced Research Computing. (1-8). 
3) Muhammad Edwin, “How to implement single sign-out in Keycloak with Spring Boot”, 2023 7th, Red Hat Developer.