Cara Menciptakan Autentikasi Token Expire Untuk Back End Web Service
Cara Membuat Token Expire Untuk API Back End |
Web Service yaitu sebuah implementasi dari API (Application Programming Interface) yang merupakan suatu “penghubung” yang memungkinkan suatu aplikasi untuk berinteraksi dengan aplikasi lainnya dan mengembangkan data. Web Service seperti sebuah alamat web, bedanya alamat web service hanya akan mengerjakan undangan dan mengembalikan jadinya biasanya berupa JSON tanpa menampilkan GUI apapun.
Web Service memakai parameter yang dikirim dengan method seperti web pada umumnya yaitu GET dan POST, adapula PUT, DELETE dan lain lain namun untuk method selain GET dan POST memerlukan konfigurasi khusus. Pada beberapa kasus untuk mengakses Web Service dibutuhkan aba-aba autentikasi (Token Akses) yang telah diizinkan untuk melihat data yang diinginkan. Semua hukum dalam undangan dan respon ini ditentukan oleh programmer yang membuatnya.
Demi keamanan dalam beberapa kasus token susukan mempunyai batas waktu penggunaan atau waktu kadaluarsa. Jangka waktunya beragam, ada yang dalam hitungan menit ada pula yang beberapa jam. Token susukan yang mempunyai waktu kadaluarsa ini umumnya dipakai pada Token Akses untuk aplikasi Mobile sebagai pengganti session.
Pada artikel ini akan menjelaskan cara membuat autentikasi token expire pada sisi server database dengan query. Langkah-langkah menciptakan token expire adalah sebagai berikut :
PERSIAPAN
Persiapkan sebuah field untuk menyimpan kegiatan login pada tabel yang dipakai untuk login, jikalau memakai framework seperti laravel maka otomatis akan dibuatkan sebuah field bernama updated_at.
Contoh Tabelnya yaitu menyerupai dibawah ini :
Nama | Tipe | Role |
id_user | Varchar | FOREIGN KEY |
remember_token | Varchar | PRIMARY KEY |
updated_at | Date/Time |
Jika ingin menyimpan tanggal kadaluarsa pada database maka buatkan satu lagi field berjulukan expired_at, namun perlu algoritma lagi untuk menghitung tanggal kadaluarsa. Pada artikel ini untuk mengetahui token sudah kadaluarsa atau belum didapat dengan cara menghitung selisih waktu login dengan waktu request dilakukan.
EKSEKUSI
Buat autentikasi token susukan pada middleware, untuk yang belum familiar dengan framework silakan buat dimana saja sebelum request yang sebetulnya dieksekusi. Middleware mempunyai kegunaan untuk filter request user sebelum dihubungkan ke request sebenarnya, programmer memanfaatkan middleware sebagai sarana untuk menempatkan autentikasi disini.
Contoh Algoritma Autentikasi Token Expire
Cek apakah parameter key(token akses) ada isinya, jika tidak ada isinya maka berikan respon
"Dibutuhkan API Key/Token Akses"
Jika ada isinya maka hitung selisih waktu kini dengan waktu login yang dimiliki token susukan dari database jika selisinya belum melewati batas waktu maka ambil.
Jika yang diambil lebih dari 1 (ketemu) maka arahkan ke request yang dituju.
Jika tidak lebih dari 1 maka berikan respon
"Token Akses Tidak Sah"
Cek apakah parameter key(token akses) ada isinya, jika tidak ada isinya maka berikan respon
"Dibutuhkan API Key/Token Akses"
Jika ada isinya maka hitung selisih waktu kini dengan waktu login yang dimiliki token susukan dari database jika selisinya belum melewati batas waktu maka ambil.
Jika yang diambil lebih dari 1 (ketemu) maka arahkan ke request yang dituju.
Jika tidak lebih dari 1 maka berikan respon
"Token Akses Tidak Sah"
Contoh Kode
$key = $request->getQueryParam("key"); if(!isset($key) || $key == ""){ return $response->withJson(["status" => "API Key required"], 401); }else{ $sql = "SELECT remember_token, updated_at FROM users WHERE remember_token=:id AND TIMESTAMPDIFF(Minute,updated_at, now()) <=120"; $stmt = $this->db->prepare($sql); $stmt->execute([":id" => $key]); if($stmt->rowCount() > 0){ return $response = $next($request, $response); } return $response->withJson(["status" => "Unauthorized"], 401); }
TIMESTAMPDIFF(Minute,updated_at, now()) <=120";
Parameter Minute artinya waktu yang dicari selisinya yaitu dengan akurasi menit, updated_at adalah waktu ketika login dan now() pada query mysql berfungsi untuk mendapat waktu kini atau ketika request dilakukan. Bagian <=120 (2 jam) yaitu batas waktu pemakaian token susukan atau selisih waktu request dengan waktu login, nilai ini sanggup ditambah atau dikurangi sesuai dengan kebutuhan seberapa usang masa aktif token susukan yang diperlukan.
Ini hanyalah salah satu pola cara menciptakan autentikasi token expire, tentunya ada cara lain untuk menciptakan autentikasi. Jika ada pertanyaan sanggup diajukan melalui media umum penulis yang tertera pada Widget Blog ini