lifelong learner — urip iku urup, currently working on accenture.

Rest Webservices dengan code igniter menggunakan library rest-server (bagian 2) – setting API KEY

9
Degananda.com -

rest-webserver yang dibuat oleh chriskacerguis menyediakan layanan untuk mengaplikasikan api key. Api key adalah sebuah kode yang dibutuhkan pada saat client melakukan request kepada web services dalam bentuk header. Sebuah request yang tidak memiliki api key atau tidak api key yang dimasukan tidak terdapat tidak dalam melakukan request kepada webservices. Namun disisi lain, fungsi dari api key dapat membantu developer dalam menentukan privilages dari user yang mengakses web services berdasarkan api key. berikut ini adalah tiga fungsi api key pada web services.

  1. Membatasi akses request web services yang tidak di inginkan (illegal)
  2. Menentukan privilages dari user yang mengakses web services. Misalnya , terdapat dua buah jenis user pada sistem yakni siswa dan guru. Siswa hanya dapat mengakses web services siswa sedangkan guru dapat mengakses webservices siswa dan guru.
  3. Melakukan tracking terhadap aktivitas(log) user pada web services.

pengaturan api key pada rest-server terletak pada /application/config/rest.php. Pada file tersebut disimpan konfigurasi terkait dengan rest-server. Dibawah ini adalah langkah-langkah untuk mengaktifkan api key pada rest-server. namun sebelumnya pastikan bahwa konfigurasi database(application/config/database.php) pada CI telah dilakukan seting karena rest-server memerlukan sebuah tabel pada databases untuk menyimpan daftar api key.

langkah 1 – enable api key

tuliskan atau uncomment dan mengganti value menjadi TRUE perintah dibawah ini

$config['rest_enable_keys'] = TRUE;

langkah 2 – membuat tabel untuk menyimpan api key

buat tabel key dengan menjalankan perintah sql dibawah ini. secara otomatis mysql akan membuat tabel keys dengan kolom yang telah didefinisikan oleh rest-server.

CREATE TABLE `keys` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`user_id` INT(11) NOT NULL,
`key` VARCHAR(40) NOT NULL,
`level` INT(2) NOT NULL,
`ignore_limits` TINYINT(1) NOT NULL DEFAULT '0',
`is_private_key` TINYINT(1)  NOT NULL DEFAULT '0',
`ip_addresses` TEXT NULL DEFAULT NULL,
`date_created` INT(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

langkah 3 – menentukan nama header yang menyimpan api key

cari kode dibawah ini dan ganti menjadi nama header yang di ingikan. pada kasus ini nama headernya adalah api_auth_key.

$config['rest_key_name'] = 'X-API-KEY';

sehingga baris kode tersebut menjadi

$config['rest_key_name'] = 'api_auth_key';

langkah 4 – membuat api key

pada database, buat record atau row baru pada tabel keys dengan sql query dibawah ini

INSERT INTO `keys`(`id`, `user_id`, `key`, `level`, `ignore_limits`, `is_private_key`, `ip_addresses`, `date_created`) VALUES ('1','1','f99aecef3d12e02dcbb6260bbdd35189c89e6e73','1','0','0','%','1')

fungsi dari query tersebut intinnya adalah membuat sebuah key dengan user id 1. Seluruh ip address dapat menggunakan key tersebut. Key yang dimasukan direkomendasikan dienkripsi dengan algoritma sha1 (klik disini untuk enkripsi sha1 online). Pada contoh diatas kata sebelum dienkripsi adalah “indonesia” dan setelah di enkripsi menjadi “f99aecef3d12e02dcbb6260bbdd35189c89e6e73”.

langkah 5  – pengujian

buka postman atau REST client dibrowser kemudian pada header masukan custom header sesuai yang telah didefinisikan dilangkah 3 dan masukan api key sesuai dengan langkah 4.

screen-shot-2016-11-14-at-6-10-02-pm

kemudian masukan url pada webservices seperti yang telah dibuat pada tulisan sebelum ini (lihat part 1 untuk membuat web services)

pada kasus ini(lokasi webservices lokal kami) urlnya adalah : http://localhost/rest-server/siswa dengan menggunakan metode POST. hasilnya dapat dilihat dibawah ini.

screen-shot-2016-11-14-at-6-13-51-pm

jika kita tidak memasukan api key maka yang terjadi adalah

 

asd

jika api key yang dimasukan salah

brum

Kesimpulannya adalah membuat api key pada rest-server cukup simpel dan mudah. dan dapat dikembangkan sesuai dengan karakteristik program yang akan dibuat. Misalnya, setiap user akan memiliki api key (otomatis generate pada saat login/membuat akun) sehingga penyedia layanan web services dapat memantau aktivitas user tersebut sebagai log.

ulasan ini akan dilanjutkan ke bagian 3 tentang menghubungkan rest server pada code igniter dengan menggunakan query builder serta langkah-langkah menampilkannya dalam bentuk JSON.

hasil dari penjelasan diatas dapat di unduh di :

https://drive.google.com/open?id=0By5rvYirLfy3VHBPaGNabm9iLXc

part 3

Rest Webservices dengan code igniter menggunakan library rest-server bagian 3 – CRUD

  • Pingback: Rest Webservices dengan code igniter menggunakan library rest-server (bagian 1) – Degananda()

  • Pingback: Rest Webservices dengan code igniter menggunakan library rest-server bagian 3 – CRUD – Degananda()

  • mang imal

    https://uploads.disquscdn.com/images/fb5858963b940ae5e5bb140e43e2b5260b9620728ebb2edf0adb710f557f2f52.png kak pada saat melakukan langkah2 diatas saya mendapatkan error seperti ini, bagai mana cara mengatasinya kak.. mohon penjelasannya 🙂

    • degananda ferdian

      halo terimakasih sudah berkunjung ke blog ini,
      apakah masnya sudah menjalankan sql query membuat tabel dan membuat 1 row diatas? (pada langkah dua dan empat).
      tujuan pembuatan tabel dan row pada langkah dua dan empat tersebut untuk membuat daftar api key.

      pastikan tabel yang dibuat bernama “keys”
      /*
      |————————————————————————–
      | REST API Keys Table Name
      |————————————————————————–
      |
      | The table name in your database that stores API keys
      |
      */
      $config[‘rest_keys_table’] = ‘keys’;

      pastikan memiliki kolom yang bernama “key”
      /*
      |————————————————————————–
      | REST Table Key Column Name
      |————————————————————————–
      |
      | If not using the default table schema in ‘rest_enable_keys’, specify the
      | column name to match e.g. my_key
      |
      */
      $config[‘rest_key_column’] = ‘key’;

      • mang imal

        hmmm, berarti di databasenya sudah dibuat tabel dengan 1 rows yah kak? soalnya saya belum buat tabel, baru buat databasenya saja…

        baiklah kalo begitu nanti saya coba lagi,,, terimaksaih penjelasannya kan 😀

        • degananda ferdian

          halo, kalau boleh bisa diupload file rest.php nya ?
          karena saya belum bisa memastikan apakah errornya itu hhe.
          kalau boleh kode rest.php punya masnya diupload disini lalu dibagikan disini
          https://gist.github.com/

          • mang imal

            malu mas, soalnya belum beres… nanti kalo sudah beres saya upload deh janji… 🙂

  • Pingback: Rest Webservices dengan code igniter menggunakan library rest-server (bagian 1) – Degananda.com()

  • Chandrayana Putra

    implementasi key ini sudah bisa dilokal. Tapi kalo dideploy ke live server bermasalah ya?? terus pake HTTPS jg protokol webnya