Skip to main content

Menyembunyikan Secret Key pada Laravel Passport

Pada catatan sebelumnya kita sudah belajar belajar bagaimana cara membuat API server menggunakan Laravel Passport dan sudah berhasil melakukan login. Tapi masalahnya pada metode login yang kita buat sebelumnya, client_secret kita masih kelihatan, dan ini tentunya tidak bagus untuk keamanan server kita.
Ilustrasi Proses Login yang tidak aman.
Apabila client_secret key ini bisa di lihat dengan mudah, maka orang akan mudah untuk melakukan akses data pada server kita. Untuk itu kita harus melakukan modifikasi pada server, sehingga user tidak perlu memasukan client_secret pada saat login.

Caranya adalah, kita akan memanggil route yang memerlukan client_secret ini di dalam server, jadi proses login yang sesungguhnya akan terjadi di dalam server, sehingga tidak terlihat oleh pengguna. Pada proses ini akan menggunakan modul Guzzle http.

Menyembunyikan Secret Key pada Laravel Passport

Berikut ini adalah langkah-langkah yang harus kita lakukan untuk menyembunyikan client_secret key pada proses login:

1. Install Guzzle 

pertama kita harus menambahkan modul Guzzle ke dalam project, caranya: buka Terminal dan
Jalankan perintah composer require guzzlehttp/guzzle. lalu tunggu sampai proses download selesai.

2. Buat Controller dengan nama AuthController

Masih di terminal, jalankan perintah php artisan make:controller AuthController. perintah ini akan membuat file AuthController.php yang berada pada folder app\Http\Controllers.

3. Buat function Login.

Buka file AuthController.php dan buat function Login di dalamnya. di bawah ini adalah code dari function Login:
public function login(Request $request)
    {   
      $http =new \GuzzleHttp\Client;
      try{
        $respone=$http->post(config('services.passport.login_endpoint'),[
          'form_params'=>[
            'grant_type'=>'password',
            'client_id'=>config('services.passport.client_id'),
            'client_secret'=>config('services.passport.client_secret'),
            'username'=>$request->username,
            'password'=>$request->password,
          ],
          'http_errors' => false
        ]);               
        return $respone->getBody();
      }
   
      catch(\GuzzleHttp\Exception\BadResponeException $e){     
        if ($e->getcode()==400){
          return response()->json('Invalid Request. Please enter a username or a password.',$e->getcode());
        }else if ($e->getcode()==401){
          return response()->json('Your credentials are incorrect. PLease try again.',$e->getcode());
        }
        return response()->json('Something went wrong on the server.',$e->getcode());
      }

    }

4. Buat Route login di file Api.php

Buka file routes\api.php dan tambahkan code berikut:
Route::post('/login','AuthController@login');
code di atas adalah untuk menambahkan satu route baru ke dalam server dengan nama login yang bisa di akses lewat url public/api/login. Dan ketika url ini di panggil, server akan melakukan proses lewat function Login yang berada di AuthController.php

5.Edit file services.php

Buka file config\services.php dan tambahkan code berikut
 'passport'=>[
        'login_endpoint'=> env('PASSPORT_LOGIN_ENDPOINT'),
        'client_id'=> env('PASSPORT_CLIENT_ID'),
        'client_secret'=> env('PASSPORT_CLIENT_SECRET'),
      ],

Kita membuat code di atas, karena kita tidak akan menaruh url login, client_secret dan id di dalam function Login, melainkan di dalam file .ENV. hal ini akan memudahkan kita apabila ada perubahan parameter di atar kedepannya.

5. Edit file .env

Buka file .envdan tambahkan code berikut ini:
PASSPORT_LOGIN_ENDPOINT="http://127.0.0.1/simkopmobile/public/oauth/token"
PASSPORT_CLIENT_ID=2
PASSPORT_CLIENT_SECRET=CGvTHrZsI5T9aVznAWhovDd03GjObgnBDVWLVlqo

Demikianlah cara untuk menyembunyikan client_secret pada proses login ke API server. Sampai di sini kita sudah belajar semua tahap dasar dalam membuat API Server menggunakan Laravel. Untuk proses selanjutnya silahkan kembangkan sesuai keperluan.
RELATED ARTIKEL

Comments

Popular posts from this blog

Urutan Tata Cara Odalan di Sanggah

Cara mengetahui Java JDK sudah di Install dengan benar di windows 10

Cara Mengatasi Java JDK tidak jalan di Windows 10