Request JSON dengan Basic Authorization Menggunakan CURL PHP - Mari Belajar Coding

17 September 2019

Request JSON dengan Basic Authorization Menggunakan CURL PHP

Request JSON dengan Basic Authorization Menggunakan CURL PHP

Selamat datang di blog Mari belajar coding. Tutorial kali ini kita akan belajar mengenai otentikasi HTTP dasar menggunakan cURL PHP. Bagaimana mengkonfigurasi cURL PHP untuk mengakses suatu sumber daya web maupun web service yang dilindungi oleh otentikasi HTTP dasar (Basic Authorization).

Request JSON dengan Basic Authorization Menggunakan CURL PHP

Pertama-tama kita buat dulu data JSON yang akan kita akses. Salin kode di bawah ini kemudian simpan dengan nama datajson.php.
<?php
 header('Content-Type: application/json');

 define('USER','Admin'); 
 define('PSWD','AdminPassowrd');

 //cek user password 
 if (!isset($_SERVER['PHP_AUTH_USER']) || !isset($_SERVER['PHP_AUTH_PW']) 
      || ($_SERVER['PHP_AUTH_USER'] != USER) 
      || ($_SERVER['PHP_AUTH_PW'] != PSWD)) { 
     header('HTTP/1.1 401 Unauthorized'); 
     header('WWW-Authenticate: Basic realm="My Realm"'); 
     echo '{"error":"No access"}';
     exit(); 
 }

 $data =array(
  array(
   "FruitID" => "1",
   "name"   =>"Apple"
  ),
  array(
   "FruitID" => "2",
   "name"   =>"Apple"
  ),
  array(
   "FruitID" => "3",
   "name"   =>"Apple"
  ),
  array(
   "FruitID" => "4",
   "name"   =>"Apple"
  ),
  array(
   "FruitID" => "5",
   "name"   =>"Apple"
  )
 );

 echo json_encode($data);
?>

Jika kita jalankan file diatas, maka akan menampilkan pesan 401 Unauthorized. Masalahnya di sini adalah bahwa data JSON dilindungi dan tidak memberikan nama pengguna dan kata sandi yang valid. Akibatnya, server merespon dengan respons 401 Tidak Diotorisasi.

Untuk mengatasi masalah ini, kita bisa menggunakan cURL PHP dengan opsi CURLOPT_USERPWD.
<?php
 header('Content-Type: application/json');

 //HTTP username.
 $username = 'Admin';
 //HTTP password.
 $password = 'AdminPassowrd';


 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL,'http://localhost:88/blog/basicuth/datajson.php');
 curl_setopt($ch, CURLOPT_USERPWD, $username . ":" . $password);  
 curl_setopt_array($ch, array(
  CURLOPT_RETURNTRANSFER => TRUE
 ));

 $output = curl_exec($ch);
 curl_close($ch);

 echo ($output);
?>

Atau bisa menggunakan opsi CURLOPT_HTTPHEADER.

<?php
 header('Content-Type: application/json');

 //HTTP username.
 $username = 'Admin';
 //HTTP password.
 $password = 'AdminPassowrd';

 $headers = array(
   'Content-Type:application/json',
   'Authorization: Basic '. base64_encode($username.":".$password)
 );

 $ch = curl_init();
 curl_setopt($ch, CURLOPT_URL,'http://localhost:88/blog/basicuth/datajson.php'); 
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
 curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

 $output = curl_exec($ch);
 curl_close($ch);

 echo ($output);

?>

Related Posts

Load comments