Membangun Autentikasi dan Otorisasi API untuk Sistem Pembayaran Digital dengan JWT dan Flask
Ringkasan penelitian tentang implementasi JSON Web Token (JWT) dan Flask untuk meningkatkan keamanan API pada sistem pembayaran digital.
Membangun Autentikasi dan Otorisasi API untuk Sistem Pembayaran Digital dengan JWT dan Flask
Sistem pembayaran digital tidak hanya membutuhkan fitur transaksi yang berjalan dengan baik, tetapi juga mekanisme keamanan yang mampu memastikan bahwa setiap request datang dari pengguna yang sah dan memiliki hak akses yang sesuai.
Dalam penelitian yang saya publikasikan di JATI (Jurnal Mahasiswa Teknik Informatika), Vol. 10 No. 3, Juni 2026, saya mengimplementasikan JSON Web Token (JWT) pada API sistem pembayaran digital menggunakan Flask. Fokus utamanya adalah memperkuat autentikasi, otorisasi, serta konsistensi transaksi ketika sistem menerima request secara bersamaan.
Artikel asli: Implementasi JSON Web Token untuk Autentikasi dan Otorisasi pada Sistem Pembayaran Digital Menggunakan Framework Flask
Penulis: Raffles Agustinus Supit, Yeremia Alfa Susetyo
Publikasi: JATI (Jurnal Mahasiswa Teknik Informatika), Vol. 10 No. 3, Juni 2026
Latar Belakang
Perkembangan e-wallet, mobile banking, dan layanan fintech membuat sistem pembayaran digital semakin banyak digunakan. Di sisi lain, API yang menjadi penghubung antarbagian sistem juga menjadi salah satu titik penting yang perlu diamankan.
Masalah yang menjadi perhatian penelitian ini meliputi:
- autentikasi API yang belum memadai,
- risiko akses tanpa izin,
- penyalahgunaan token atau kredensial,
- perlindungan terhadap serangan pada endpoint API,
- serta konsistensi data ketika beberapa transaksi diproses secara bersamaan.
JWT dipilih karena memungkinkan autentikasi berbasis token tanpa bergantung pada penyimpanan session tradisional di server. Sementara itu, Flask digunakan sebagai framework backend karena memiliki arsitektur yang ringan dan modular.
Apa yang Dibangun?
Sistem dirancang menggunakan layered architecture dengan beberapa komponen utama:
Client
|
v
Flask API Gateway
|
+--> JWT Authentication
+--> Rate Limiter
|
v
API Routes
|
+--> Authentication
+--> Wallet
+--> Payment
+--> Administration
|
v
Business Logic
|
+--> Authentication Service
+--> Wallet Service
+--> Payment Service
|
v
Data Layer
|
+--> Relational Database
+--> Redis Cache
Arsitektur ini memisahkan tanggung jawab antara lapisan API, logika bisnis, dan data. Pada desain sistem di penelitian, terdapat pula RBAC untuk pengelolaan hak akses, audit logger untuk aktivitas penting, serta mekanisme pembatasan transaksi.
Bagaimana JWT Digunakan?
Alur autentikasi dimulai ketika pengguna melakukan login menggunakan email dan password.
Secara sederhana:
- Pengguna mengirim request login.
- Backend mencari data pengguna berdasarkan email.
- Password diverifikasi menggunakan hash.
- Jika valid, sistem membuat access token dan refresh token.
- Token digunakan pada request API berikutnya.
- Server memverifikasi signature dan masa berlaku token.
- Hak akses dari payload token digunakan untuk menentukan resource yang dapat diakses.
Jika token tidak valid atau sudah kedaluwarsa, request ditolak dengan response HTTP 401.
Penelitian juga menerapkan mekanisme pencabutan token sehingga token yang sudah tidak berlaku tidak dapat digunakan kembali setelah pengguna melakukan logout.
Contoh Alur Transfer
Salah satu bagian penting dari sistem adalah transaksi transfer antar pengguna.
Ketika request transfer diterima, sistem melakukan beberapa validasi:
- autentikasi pengguna,
- verifikasi PIN,
- validasi penerima,
- pengecekan saldo,
- pengecekan batas transaksi,
- penguncian untuk menghindari race condition,
- pencatatan debit dan kredit pada ledger,
- serta pencatatan audit.
Setelah seluruh validasi terpenuhi, transaksi dibuat dengan status pending, kemudian diproses hingga menjadi completed.
Pendekatan ini penting karena keamanan sistem pembayaran bukan hanya soal siapa yang boleh mengakses API, tetapi juga bagaimana sistem menjaga agar data transaksi tetap konsisten.
Pengujian Keamanan JWT
JWT diuji menggunakan beberapa skenario untuk memastikan server tidak menerima token yang dimanipulasi atau tidak valid.
Skenario yang diuji meliputi:
| Skenario | Hasil |
|---|---|
| Token kedaluwarsa | Lulus — HTTP 401 |
| Signature token tidak valid | Lulus — HTTP 401 |
| Algoritma none | Lulus — HTTP 401 |
| Token tanpa claim exp | Lulus — HTTP 401 |
Seluruh skenario pengujian keamanan JWT berhasil ditolak oleh sistem.
Pengujian Keamanan API
Pengujian keamanan API mengacu pada beberapa kategori kerentanan dan dilakukan pada endpoint yang relevan.
Hasil pengujian mencakup:
| Pengujian | Hasil | |---|---| | Brute force pada login | Ditolak dengan HTTP 429 | | Akses endpoint admin oleh user biasa | Ditolak dengan HTTP 403 | | Paparan data sensitif | Data sensitif tidak dikembalikan | | Rate limiting | Berjalan dan mengembalikan HTTP 429 | | Security headers | Tersedia | | SQL Injection | Ditolak dengan HTTP 400 |
Seluruh pengujian keamanan API yang dilakukan dinyatakan lulus.
Pengujian Concurrency
Bagian yang menarik dari penelitian ini adalah pengujian terhadap request yang berjalan secara bersamaan.
Pada salah satu skenario, sistem menerima 10 request top-up secara bersamaan, masing-masing sebesar Rp50.000, dengan saldo awal Rp0.
Hasilnya:
Saldo akhir: Rp500.000
Tidak terjadi duplikasi atau inkonsistensi saldo.
Penelitian menggunakan mekanisme database locking dan transaksi ACID untuk membantu menjaga operasi baca/tulis saldo tetap konsisten. Selain itu, diterapkan idempotency key menggunakan header X-Idempotency-Key.
Ketika 10 request menggunakan idempotency key yang sama, hanya satu transaksi yang berhasil diproses, sementara request duplikat tidak diproses kembali.
Pengujian Fungsional
Fungsionalitas utama sistem juga diuji menggunakan beberapa endpoint, antara lain:
- pengaturan PIN transaksi,
- pengecekan saldo,
- top-up,
- validasi penerima transfer,
- transfer,
- riwayat transaksi,
- validasi jumlah transaksi,
- serta akses setelah logout.
Seluruh skenario pada pengujian fungsional dinyatakan lulus dan menghasilkan response HTTP sesuai dengan rancangan sistem.
Hasil Akhir
Secara keseluruhan, penelitian menghasilkan sistem yang berhasil menjalankan empat kelompok pengujian:
- Keamanan JWT
- Keamanan API
- Fungsionalitas transaksi
- Concurrency
Berdasarkan hasil pengujian, seluruh skenario yang diuji berhasil memenuhi kondisi yang diharapkan.
Hal yang paling penting dari implementasi ini adalah bahwa JWT tidak berdiri sendiri sebagai solusi keamanan. JWT digunakan bersama mekanisme lain seperti:
- rate limiting,
- validasi input,
- role-based access control,
- token revocation,
- database transaction,
- locking,
- idempotency,
- dan audit logging.
Dengan pendekatan tersebut, keamanan API dan konsistensi transaksi dapat ditangani secara lebih menyeluruh.
Apa yang Saya Pelajari?
Dari penelitian ini, ada beberapa hal yang menjadi pembelajaran utama:
1. Authentication bukan satu-satunya masalah
Memastikan pengguna memiliki token yang valid belum cukup. Sistem juga perlu menentukan apa yang boleh dilakukan oleh pengguna tersebut.
2. Keamanan API membutuhkan beberapa lapisan
JWT perlu dikombinasikan dengan rate limiting, validasi input, access control, dan mekanisme keamanan lainnya.
3. Concurrency sangat penting pada sistem pembayaran
Dua atau lebih request yang datang hampir bersamaan dapat menyebabkan race condition jika proses update saldo tidak dirancang dengan benar.
4. Idempotency penting untuk transaksi
Request yang sama tidak boleh menghasilkan transaksi ganda hanya karena client melakukan retry atau mengirim request secara bersamaan.
5. Pengujian keamanan harus dibuat sebagai skenario nyata
Tidak cukup hanya menguji request normal. Sistem juga perlu diuji dengan token kedaluwarsa, token yang dimanipulasi, brute force, privilege escalation, SQL injection, dan request berjumlah besar.
Penutup
Penelitian ini menunjukkan bahwa kombinasi JWT dan Flask dapat digunakan sebagai fondasi untuk membangun API sistem pembayaran digital dengan mekanisme autentikasi dan otorisasi yang lebih terstruktur.
Dari sisi implementasi, tantangan yang menarik bukan hanya bagaimana membuat login menggunakan JWT, tetapi bagaimana mengintegrasikan autentikasi tersebut dengan otorisasi, transaksi finansial, concurrency control, idempotency, dan keamanan API secara bersamaan.
Penelitian ini masih dapat dikembangkan lebih lanjut, salah satunya dengan menambahkan Multi-Factor Authentication (MFA) sebagai lapisan keamanan tambahan.
Referensi
Supit, R. A., & Susetyo, Y. A. (2026). Implementasi JSON Web Token untuk Autentikasi dan Otorisasi pada Sistem Pembayaran Digital Menggunakan Framework Flask. JATI (Jurnal Mahasiswa Teknik Informatika), 10(3).
Lisensi dan Atribusi
Artikel blog ini merupakan ringkasan/adaptasi dari penelitian yang telah dipublikasikan pertama kali pada JATI (Jurnal Mahasiswa Teknik Informatika).
Artikel asli diterbitkan dengan lisensi Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0).
- Penulis: Raffles Agustinus Supit, Yeremia Alfa Susetyo
- Jurnal: JATI (Jurnal Mahasiswa Teknik Informatika)
- Volume: 10
- Nomor: 3
- Tahun: 2026
- Lisensi: CC BY-SA 4.0