Konsep Dasar Autentikasi Token Akses Sederhana

tataadin.blogspot.com

LATAR BELAKANG

Autentikasi adalah fondasi utama dalam backend. Tanpa autentikasi, API akan terbuka untuk siapa saja, dan itu berbahaya. Salah satu cara populer untuk mengamankan akses adalah dengan token akses. Token ini ibarat tiket masuk sementara: siapa pun yang memegang token valid bisa mengakses API, tapi hanya dalam jangka waktu tertentu.

Mengapa token? Karena sistem modern sering berjalan lintas platform (mobile, web, IoT). Token lebih fleksibel dibanding session cookie tradisional, bisa dikirim lewat header atau parameter, dan mudah diintegrasikan.

PEMBAHASAN

Bagaimana Token Akses Bekerja

Secara sederhana, alurnya seperti ini:
  1. Login
    pengguna berhasil login, server membuat token unik.
  2. Penggunaan Token
    Aplikasi client harus menyimpan token dan setiap request API wajib membawa token itu.
  3. Verifikasi Token
    Cek apakah token valid dan belum kadaluarsa.
  4. Token Kdaluarsa
    Akses ditolak, pengguna harus login ulang.
Bayangkan token seperti tiket masuk sebuah event:
  • Tiket hanya berlaku untuk satu event sesuai dengan durasi atau jadwal yang telah dibeli.
  • Petugas (server) akan memeriksa apakah tiket masih berlaku dan sesuai jadwal.
  • Jika waktu tayang sudah lewat, tiket tidak bisa digunakan lagi.

Penting: Gunakan Waktu Server

Salah satu kesalahan umum pemula adalah menghitung masa berlaku token menggunakan waktu dari client (misalnya JavaScript di browser). Ini berbahaya karena waktu di perangkat user bisa dimanipulasi. Golden Rule: semua verifikasi berbasis waktu harus menggunakan waktu server. Server adalah sumber kebenaran, bukan jam di laptop atau HP user.

Buat autentikasi token akses pada middleware, untuk yang belum familiar dengan framework silakan buat dimana saja sebelum request yang sebenarnya dieksekusi. Middleware berguna untuk filter request user sebelum dihubungkan ke request sebenarnya, programmer memanfaatkan middleware sebagai sarana untuk menempatkan autentikasi disini.

Contoh Mekanisme Sederhana Autentikasi Token Expire
1. Cek apakah parameter key(token akses) ada isinya, jika tidak ada isinya maka berikan respon HTTP Code 401/403 dengan pesan "Dibutuhkan API Key/Token Akses"
2. Jika ada isinya maka hitung selisih waktu sekarang dengan waktu login yang dimiliki token akses dari database jika selisihnya belum melewati batas waktu maka ambil data tersebut.
3. Jika data dari proses sebelumnya ada berarti token masih valid sehingga bisa dilanjutkan pada proses yang dituju.
4. Jika data dari proses sebelumnya tidak ada berarti token sudah invalid sehingga proses tidak bisa dilanjutkan dan harus memberikan respon HTTP Code 401 dengan pesan "Token Akses Tidak Sah"
$key = $_GET['token'] ?? '';

if ($key === '') {
    http_response_code(401);
    echo json_encode(["status" => "Token required"]);
    exit;
}

$sql = "SELECT remember_token, updated_at 
        FROM users 
        WHERE remember_token=:id 
        AND TIMESTAMPDIFF(MINUTE, updated_at, NOW()) <= 120";

$stmt = $db->prepare($sql);
$stmt->execute([":id" => $key]);

if ($stmt->rowCount() > 0) {
    // Token valid → lanjutkan request
    echo json_encode(["status" => "Authorized"]);
} else {
    http_response_code(401);
    echo json_encode(["status" => "Unauthorized"]);
}
	

Letak autentikasi waktu kadaluarsa ada pada bagian :
TIMESTAMPDIFF(Minute,updated_at, now()) <=120";

Parameter Minute artinya waktu yang dicari selisinya adalah dengan akurasi menit, updated_at adalah waktu saat login dan now() pada query mysql berfungsi untuk mendapatkan waktu sekarang atau saat request dilakukan. Bagian <=120 (2 jam) adalah batas waktu pemakaian token akses atau selisih waktu request dengan waktu login, nilai ini dapat ditambah atau dikurangi sesuai dengan kebutuhan seberapa lama masa aktif token akses yang diperlukan.

KESIMPULAN

Konsep dasar Autentikasi Token Akses Sederhana membantu pemula backend memahami bahwa:
  • Token adalah tiket masuk sementara.
  • Token harus diverifikasi setiap request.
  • Token bisa kadaluarsa, dan verifikasi waktu harus selalu berdasarkan server time.

Dengan memahami konsep ini, programmer bisa melangkah ke tahap berikutnya: implementasi token yang lebih aman, seperti JWT, refresh token, dan integrasi dengan OAuth.

Saya seorang programmer dengan fokus developer Web dan Android.