OAuth2 adalah protokol keamanan yang memungkinkan aplikasi pihak ketiga mengakses sumber daya pengguna di aplikasi lain. Laravel Passport, sebuah paket resmi Laravel, menyederhanakan implementasi OAuth2, membuat proses autentikasi menjadi lebih aman dan fleksibel.
Mengapa Menggunakan Laravel Passport?
Integrasi Mudah: Terintegrasi langsung dengan Laravel, sehingga konfigurasi menjadi sangat mudah.
Fitur Lengkap: Mendukung berbagai aliran OAuth2, seperti Authorization Code, Implicit, Password, dan Client Credentials.
Keamanan: Telah melalui audit keamanan yang ketat.
Kustomisasi: Dapat disesuaikan untuk memenuhi kebutuhan spesifik aplikasi Anda.
Untuk membuat sistem login menggunakan Laravel Passport dengan OAuth2, berikut adalah langkah-langkahnya:
1. Install Laravel Passport
Install Laravel Passport melalui Composer:
composer require laravel/passport
2. Menyiapkan Database
Jalankan migrasi untuk membuat tabel yang dibutuhkan oleh Passport:
php artisan migrate
Setelah itu, jalankan perintah berikut untuk menghasilkan kunci enkripsi dan token klien:
php artisan passport:install
Perintah ini akan menghasilkan client ID dan client secret yang digunakan untuk autentikasi OAuth2.
3. Konfigurasi Model User
Tambahkan trait HasApiTokens
pada model User
:
use Laravel\Passport\HasApiTokens;
class User extends Authenticatable {
use HasApiTokens, Notifiable;
}
4. Mengkonfigurasi AuthServiceProvider
Daftarkan route Passport di dalam AuthServiceProvider
:
use Laravel\Passport\Passport;
class AuthServiceProvider extends ServiceProvider {
public function boot(){
$this->registerPolicies();
Passport::routes();
}
}
5. Mengonfigurasi API Auth Guard
Di dalam file config/auth.php
, ganti driver API menjadi passport
:
'guards' => [
'web' => [
'driver' => 'session',
'provider' => 'users',
],
'api' => [
'driver' => 'passport',
'provider' => 'users',
],
],
6. Membuat API Login
Buat controller untuk menangani login pengguna dan menghasilkan token OAuth2:
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
class AuthController extends Controller {
public function login(Request $request) {
$credentials = $request->only('email', 'password');
if (Auth::attempt($credentials)) {
$user = Auth::user();
$token = $user->createToken('LaravelPassportToken')->accessToken;
return response()->json(['token' => $token], 200);
} else {
return response()->json(['error' => 'Unauthorized'], 401);
}
}
}
7. Menambahkan Route untuk Login
Tambahkan route untuk login di file routes/api.php
:
use App\Http\Controllers\AuthController;
Route::post('login', [AuthController::class, 'login']);
8. Menggunakan Token untuk Mengakses API
Setelah login berhasil, token yang dihasilkan dapat digunakan untuk mengakses API yang dilindungi. Token ini harus disertakan dalam header Authorization pada setiap permintaan API:
Authorization: Bearer {token}
9. Testing API
Gunakan tool seperti Postman atau curl untuk menguji endpoint login dan mengakses API menggunakan token yang dihasilkan.
Itulah langkah-langkah dasar untuk membuat sistem login menggunakan Laravel Passport dengan OAuth2. Sistem ini memungkinkan pengguna untuk mengautentikasi dan mendapatkan token akses untuk mengakses API yang dilindungi.