Rabu, 02 Februari 2022

LARAVEL-api token

 

Membuat Autentikasi API Token di Laravel

https://medium.com/@suciptoid/membuat-autentikasi-api-token-di-laravel-1cc29c5a5076

Sebelumnya saya pernah menulis bagaimana membuat OAuth 2.0 Server di laravel menggunakan Laravel Passport.

Kali ini bahasanya masih sedikit sama, mengenai otentikasi REST API pada framework Laravel. Apabila di Laravel Passport harus menginstall package lagi, pada tutorial kali ini saya akan menggunakan metode API Token, sehingga tidak perlu menginstall package lain karena fitur ini sudah ada pada Laravel secara .

Menurut saya laravel passport lebih ditujukan untuk proyek aplikasi dengan skala besar, tapi jika ingin autentikasi yang simple untuk mengamankan endpoint API kamu, lebih baik mencoba metode API Token terlebih dahulu.

Buat Proyek Laravel

Mari kita buat proyek baru menggunakan PHP Composer.

composer create-project --prefer-dist laravel/laravel laravel-api

Proses di atas bisa memakan waktu yang cukup lama, bergantung dari koneksi internet.

Setelah installasi selesai, buat database MySQL (Boleh pakai yang lain) lalu isikan kredensial database kamu di file .env seperti contoh di bawah ini:

Contoh Konfigurasi database di file .env

Setelah konfigurasi sudah benar, sekarang jalankan perintah di bawah ini untuk memastikan apakah sudah berjalan dengan baik.

php artisan migrateOutput:
Migration table created successfully.
Migrated: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_100000_create_password_resets_table

Scaffolding Auth

Seperti yang saya bilang tadi, untuk membuat sistem autentikasi di laravel sangat mudah, cukup jalankan Auth Scaffolding kita akan mendapatkan fitur login, reset password dan juga register user.

Jalankan perintah artisan ini di terminal / console

php artisan make:authOutput:
Authentication scaffolding generated successfully.

Sekarang coba untuk menjalankan aplikasi Laravel kita dengan perintah artisan berikut ini

php artisan serve

Lalu buka browser dan arahkan pada alamat http://localhost:8000 jika berhasil maka akan terdapat menu login dan register.

Halaman register Laravel Auth

API Endpoint

Sekarang mari kita coba panggil API endpoint yang sudah disediakan oleh laravel pada saat menginstallnya. Untuk menguji bisa menggunakan Postman ataupun Curl.

Galat (error) terjadi saat mengakses menggunakan Authorization Header

Untuk mengakses API kita harus mengirim minimal 2 buah header parameter, yaitu:

  • Accept : application/json maksudnya request saya berharap mendapatkan balasan berupa format json
  • Authorization : apiKeyKamuxxxx ini adalah api key yang kita gunakan untuk mengenali siapa kita (si pembuat http request)

Pada contoh di atas, saya mencoba untuk mengakses endpoint api dengan middleware api:auth. Bisa di chek dengan perintah:

php artisan route:list
Route List

Pada contoh postman saya, muncul error seperti ini

SQLSTATE[42S22]: Column not found: 1054 Unknown column ‘api_token’ in ‘where clause’ (SQL: select * from `users` where `api_token` = xxx limit 1)

Itu karena kita belum menambahkan sebuah field bernama api_token pada tabel user.

Alter users Table

php artisan make:migration add_api_token_field_users --table=usersOutput:
Created Migration: 2017_02_10_164751_add_api_token_field_users

Lalu edit file migration tersebut menjadi seperti berikut

Jalankan perintah migrate

php artisan migrate

Jika kita coba lagi di Postman maka hasilnya akan seperti di bawah ini, karena tidak ada record user dengan api_token xxx.

Unauthenticated.

User Dummy

Untuk membuat user , bisa menggunakan Database Seeder atau juga bisa menggunakan Laravel Tinker, tapi sayang sekali pada versi 5.4 ini laravel tinker sudah tidak di masukkan ke core laravel lagi, jadi harus install manual untuk menggunakan fitur laravel tinker.

Daripada ribet install package lagi, lebih baik kita pakai seeder saja, buat seeder.

php artisan make:seeder UserSeeder

Edit file tersebut, ada di folder database/seeds

Jalankan perintah seed

php artisan db:seed --class=UserSeeder

Test

Sekarang coba lagi jalankan request di postman seperti contoh sebelumnya, tapi dengan api_token yang valid.

Uji coba pertama dengan api token yang valid

Whoops, api_token kelihatan

Waduh, api_token kelihatan pada response json kita, padahal token tersebut sangat rahasia karena berfungsi sebagai pengganti username dan password untuk autentikasi user. Untuk menyembunyikanya, perlu sedikit sentuhan pada file app/User.php

Tambahkan 'api_token' pada variabel $hidden sehingga menjadi seperti ini

protected $hidden = [
‘password’, ‘remember_token’,’api_token’
];

Coba lagi dan, huwala…

Horray…!!

Penggunaan Token

Setiap request ke url / route yang menggunakan middleware api:auth maka harus menyertakan header Authorization dengan parameter Bearer apitokenkamuh

Github Repo

Jika ada yang berminat tutorial dalam bentuk video, bisa diungkapkan melalui response. Namun apabila tulisan ini sudah cukup jelas, semoga bermanfaat. Jika kamu suka dengan artikel ini jangan lupa klik 💚 dan share ke teman teman.

Tidak ada komentar:

Posting Komentar