Cara Decode JWT di PHP: Implementasi Library Firebase

Metode Decode JWT di PHP

Untuk melakukan decode JSON Web Token (JWT) di PHP, standar industri yang paling banyak digunakan adalah library firebase/php-jwt. Proses ini melibatkan konversi string token yang terenkripsi (Base64Url) menjadi objek PHP yang dapat dibaca, sekaligus memvalidasi tanda tangan (signature) menggunakan kunci rahasia (secret key) atau kunci publik.

Langkah 1: Instalasi Library

Pastikan Anda telah menginstal Composer di sistem Anda. Jalankan perintah berikut di terminal pada direktori proyek Anda:

composer require firebase/php-jwt

Langkah 2: Implementasi Kode Decode

Berikut adalah contoh implementasi untuk melakukan decode token dengan algoritma HS256:

<?php
require 'vendor/autoload.php';
use Firebase\JWT\JWT;
use Firebase\JWT\Key;

$jwt = "isi_token_anda_disini";
$key = "rahasia_anda_yang_sangat_aman";

try {
    $decoded = JWT::decode($jwt, new Key($key, 'HS256'));
    print_r($decoded);
} catch (Exception $e) {
    echo 'Gagal decode: ' . $e->getMessage();
}

Tabel Perbandingan Metode Decode

MetodeKeamananKebutuhan
Library FirebaseTinggi (Teruji)Composer
Manual (base64_decode)Sangat RendahTidak disarankan
Lcobucci/JWTTinggi (Kompleks)Composer

Poin Penting Validasi

  • Algoritma: Selalu tentukan algoritma yang tepat (misal: HS256, RS256) untuk mencegah serangan 'none' algorithm.
  • Expired Time: Library ini secara otomatis akan melempar pengecualian (exception) jika klaim 'exp' (waktu kedaluwarsa) pada token telah terlewati.
  • Secret Key: Jangan pernah menyimpan kunci rahasia di dalam kode sumber (hardcoded). Gunakan file .env yang tidak masuk ke dalam sistem kontrol versi (Git).

Troubleshooting Umum

Jika Anda menemui error ExpiredException, artinya token sudah tidak berlaku. Jika menemui SignatureInvalidException, periksa kembali apakah kunci rahasia yang digunakan untuk decode sama persis dengan kunci yang digunakan saat proses encode.