Membuat login laravel passport OAuth2

Membuat login laravel passport OAuth2

Admin
Admin 10 Aug 2024

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.