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.
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);
?>