AI Assistant
Detail Karya Portofolio

Rancangan 3 Server Dengan API, JWT, dan AES

Widya Juliani Putri Oleh: Widya Juliani Putri

Ringkasan Portofolio

Proyek ini membangun sistem komunikasi terdistribusi dengan tiga server menggunakan Python Flask. Server pertama bertugas mengelola autentikasi dan menghasilkan token JWT, server kedua melakukan enkripsi data menggunakan algoritma AES, dan server ketiga menyimpan data ke database MySQL dengan prepared statement untuk keamanan. Sistem ini dirancang untuk mensimulasikan praktik terbaik keamanan data dan komunikasi antarserver.

Deskripsi & Detail Proyek

Proyek: Rancang 3 Server dengan API, JWT, dan AES

1. Deskripsi Proyek

Proyek ini adalah simulasi sistem terdistribusi menggunakan arsitektur tiga server. Setiap server memiliki peran spesifik yang saling terhubung melalui API. Fokus utama proyek adalah:

  • Menerapkan autentikasi menggunakan JWT (JSON Web Token).
  • Mengamankan data dengan algoritma AES (Advanced Encryption Standard).
  • Mengelola data di database MySQL menggunakan teknik keamanan seperti prepared statement.

2. Tujuan Utama

  • Memahami implementasi autentikasi dan otorisasi dengan JWT.
  • Mengamankan data yang dikirim melalui jaringan dengan enkripsi AES.
  • Menyusun infrastruktur server yang terhubung dan berkomunikasi secara aman.

Langkah-Langkah Pengerjaan

Langkah 1: Membuat Server 1 (Autentikasi dan Token)

Server ini bertanggung jawab menghasilkan token untuk setiap pengguna yang berhasil login.

  • Instalasi Flask dan library pendukung Flask adalah framework Python yang ringan untuk membangun API. JWT digunakan untuk membuat dan memvalidasi token autentikasi.
  • Kode untuk Server 1:

  • Penjelasan Kode:
    1. Endpoint /login:
      • Menerima permintaan POST dengan username dan password.
      • Jika kredensial benar, server membuat token JWT yang berisi informasi pengguna (payload) dan masa berlaku token (30 menit).
      • Token dikembalikan ke klien sebagai respons.
    2. Token JWT:
      • Format: Header, Payload, dan Signature.
      • Digunakan untuk memastikan hanya pengguna yang terautentikasi dapat mengakses server lain.
  • Validasi Login:
    1. Validasi sederhana dengan membandingkan username dan password. Dalam implementasi nyata, Anda bisa mengganti ini dengan database.
  • Uji Coba Server:
    1. Jalankan server:
    2. Uji endpoint /login menggunakan Postman atau cURL:

Langkah 2: Membuat Server 2 (Enkripsi Data dengan AES)

Server ini bertanggung jawab untuk menerima data, memverifikasi token JWT, dan mengenkripsi data menggunakan AES.

  • Instalasi library: Algoritma AES adalah standar enkripsi yang digunakan untuk mengamankan data.
  • Kode untuk Server 2:

  • Penjelasan Kode:
    1. Endpoint /encrypt:
      • Menerima token JWT di header Authorization dan data untuk dienkripsi dalam format JSON.
      • Token diverifikasi menggunakan secret key yang sama dengan Server 1.
      • Data dienkripsi menggunakan AES dengan mode EAX, yang memastikan keamanan dan integritas pesan.
  • Uji Coba Server:
    1. Jalankan server:
    2. Kirim permintaan POST dengan token dari Server 1 dan data.

Langkah 3: Membuat Server 3 (Menyimpan Data ke Database MySQL)

Server ini bertugas menerima data terenkripsi dan menyimpannya di database.

  • Instalasi library:
  • Konfigurasi Database MySQL:
    1. Buat database dan tabel:
  • Kode untuk Server 3:

  • Penjelasan Kode:
    1. Token JWT diverifikasi sebelum menyimpan data.
    2. Prepared statement digunakan untuk mencegah SQL injection.

 

Langkah 4: Menguji API dengan Postman

  • Dapatkan token dari Server 1.
  • Gunakan token untuk endpoint di Server 2 dan Server 3.

 

Langkah 5: Melakukan Stress Test dengan JMeter

  • Konfigurasi Thread Group:
    1. Pengguna: 30.
    2. Ramp-Up Period: 10 detik.
  • Tes HTTP Request pada masing-masing server.