Pilihan Utama Library JWT untuk Python
Untuk kebutuhan implementasi JSON Web Token (JWT) di Python, terdapat dua library standar industri yang paling banyak digunakan: PyJWT dan python-jose. PyJWT adalah pilihan utama karena dokumentasinya yang sangat lengkap, performa stabil, dan dukungan penuh terhadap standar RFC 7519. Sementara itu, python-jose sering dipilih jika aplikasi Anda membutuhkan dukungan algoritma kriptografi yang lebih luas atau kompatibilitas dengan spesifikasi JOSE (JSON Object Signing and Encryption) yang lebih kompleks.
Perbandingan Library JWT
| Fitur | PyJWT | python-jose |
|---|---|---|
| Popularitas | Sangat Tinggi | Tinggi |
| Kemudahan Penggunaan | Sangat Mudah | Mudah |
| Dukungan Algoritma | Standar (HS256, RS256, dll) | Sangat Luas |
| Pemeliharaan | Aktif | Aktif |
| Instalasi | pip install pyjwt | pip install python-jose[cryptography] |
Implementasi PyJWT
PyJWT adalah library yang paling direkomendasikan untuk sebagian besar kasus penggunaan web API. Berikut adalah contoh implementasi dasar untuk melakukan encoding (pembuatan token) dan decoding (verifikasi token).
import jwt
import datetime
# Konfigurasi
SECRET_KEY = "rahasia_super_aman"
ALGORITHM = "HS256"
# Membuat Token
payload = {
"user_id": 123,
"exp": datetime.datetime.utcnow() + datetime.timedelta(hours=1)
}
token = jwt.encode(payload, SECRET_KEY, algorithm=ALGORITHM)
print(f"Token: {token}")
# Verifikasi Token
try:
decoded = jwt.decode(token, SECRET_KEY, algorithms=[ALGORITHM])
print(f"Data User: {decoded['user_id']}")
except jwt.ExpiredSignatureError:
print("Token kadaluwarsa")
except jwt.InvalidTokenError:
print("Token tidak valid")Langkah Instalasi dan Penggunaan
- Instalasi: Gunakan perintah
pip install pyjwt. Jika Anda memerlukan dukungan enkripsi tambahan, gunakanpip install pyjwt[crypto]. - Secret Key: Selalu gunakan kunci rahasia yang panjang dan acak. Simpan dalam variabel lingkungan (environment variable), jangan pernah menuliskan kunci langsung di dalam kode sumber (hardcoded).
- Algoritma: Selalu tentukan parameter
algorithmssaat melakukandecodeuntuk mencegah serangan algorithm confusion. - Eksperimen: Gunakan klaim standar seperti
exp(expiration) untuk memastikan token memiliki masa berlaku terbatas demi keamanan.
Kapan Menggunakan python-jose?
Gunakan python-jose jika proyek Anda memerlukan fitur JWE (JSON Web Encryption) atau jika Anda bekerja dalam ekosistem yang sangat bergantung pada spesifikasi JOSE yang ketat. Library ini membungkus berbagai backend kriptografi, sehingga memberikan fleksibilitas lebih tinggi dalam menangani kunci publik/privat yang kompleks dibandingkan PyJWT standar.