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-jwtLangkah 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
| Metode | Keamanan | Kebutuhan |
|---|---|---|
| Library Firebase | Tinggi (Teruji) | Composer |
| Manual (base64_decode) | Sangat Rendah | Tidak disarankan |
| Lcobucci/JWT | Tinggi (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
.envyang 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.