Skip to content
Snippets Groups Projects
X550ZE\David's avatar
David authored
3e3876f7
Forked from IF3110 / TugasBesar2_2017
79 commits ahead of the upstream repository.

Tugas 2 IF3110 Pengembangan Aplikasi Berbasis Web

Melakukan upgrade Website ojek online sederhana pada Tugas 1 dengan mengaplikasikan arsitektur web service REST dan SOAP.

Arsitektur Umum Server

Gambar Arsitektur Umum

Tugas 2 ini terdiri dari berberapa komponen yang harus dibuat:

  • Web app: digunakan untuk menangani HTTP request dari web browser dan menghasilkan HTTP response. Bagian yang diimplementasi dengan JSP ini juga bertugas untuk meng-generate tampilan web layaknya PHP. Bagian ini wajib dibuat dengan Java + Java Server Pages. Maka dari itu, konversi seluruh kode PHP pada tugas 1 menjadi kode JSP.
  • Ojek Online Web Service: digunakan sebagai interface yang dipanggil oleh aplikasi melalui protokol SOAP. melakukan query ke database, operasi insert, dan operasi update untuk entitas User, History, dan Preferred Locations. Webservice ini akan dipanggil oleh aplikasi dengan menggunakan SOAP. Webservice ini wajib dibuat dengan JAX-WS dengan protokol SOAP atau Webservice lain yang basisnya menggunakan SOAP dan Java.
  • Identity service: dipanggil oleh aplikasi untuk menerima email (sebagai username) dan password pengguna, dan menghasilkan access token. Identity Service juga dipanggil oleh ojek online web service untuk melakukan validasi terhadap access token yang sedang dipegang oleh web app. Service ini dibuat menggunakan REST. Namun, selain menghandle request secara REST biasa, Identity Service juga harus bisa menerima SOAP request dan mengembalikan SOAP response (contoh SOAP request dan response dapat dilihat pada link berikut). Identity service ini wajib dibuat dengan menggunakan Java Servlet.
  • Database: pisahkan basis data yang telah Anda buat pada tugas 1 menjadi basis data khusus manajemen account (menyimpan username, password, dkk) dan basis data ojek online tanpa manajemen account. Basis data account digunakan secara khusus oleh Identity Service. Ojek Online Web Service tidak boleh secara langsung mengakses basis data account untuk melakukan validasi token (harus melalui Identity Service).

Skenario

Login

  1. Pengguna mengakses halaman login, contoh: /login.jsp dan mengisi form.
  2. JSP akan membuka HTTP request ke Identity Service, contoh POST /login dengan body data email dan password.
  3. Identity service akan melakukan query ke DB untuk mengetahui apakah email dan password tersebut valid.
  4. Identity service akan memberikan HTTP response access token dan expiry time jika email dan password ada di dalam DB, atau error jika tidak ditemukan data. Silakan definisikan expiry time yang menurut Anda sesuai.
  5. Access token ini digunakan sebagai representasi state dari session pengguna dan harus dikirimkan ketika pengguna ingin melakukan semua aktivitas, kecuali login, register, dan logout.
  6. Access token dibangkitkan secara random. Silakan definisikan sendiri panjang tokennya.
  7. Cara penyimpanan access token dibebaskan.
  8. Silakan definisikan format request dan response sesuai kebutuhan anda. Anda dapat menggunakan JSON atau XML untuk REST.

Register

  1. Pengguna mengakses halaman register, contoh: /register.jsp dan mengisi form.
  2. JSP akan melakukan HTTP request ke Identity Service, contoh POST /register dengan body data yang dibutuhkan untuk registrasi.
  3. Identity service akan query DB untuk melakukan validasi bahwa email dan username belum pernah terdaftar sebelumnya.
  4. Identity service akan menambahkan user ke DB bila validasi berhasil, atau memberi HTTP response error jika username sudah ada atau confirm password salah.
  5. Identity service akan memberikan HTTP response access token dan expiry time dan user akan ter-login ke halaman profile bila user merupakan driver atau ke halaman order bila user bukan merupakan driver.
  6. Silakan definisikan format request dan response sesuai kebutuhan anda. Anda dapat menggunakan JSON atau XML untuk REST.

Logout

  1. Pengguna menekan tombol logout.
  2. JSP akan melakukan HTTP request ke Identity Service, contoh POST /logout dengan body data yang dibutuhkan.
  3. Identity service akan menghapus atau melakukan invalidasi terhadap access token yang diberikan.
  4. Identity service akan mengembalikan HTTP response berhasil.
  5. Halaman di-redirect ke halaman login.

Add Preferred Location, Make an Order, dll

  1. Pengguna mengakses halaman add preferred location, misal /add-preferred-location.jsp dan mengisi form.
  2. JSP akan memanggil fungsi pada ojek online web service dengan SOAP, misalnya addPreferredLocation(access_token, location). Contohnya, dapat dilihat pada link berikut Perhatikan pemanggilan pada contoh ini seperti melakukan remote procedure call.
  3. Fungsi tersebut akan melakukan HTTP request ke Identity Service, untuk mengenali user dengan access_token yang diberikan.
    • Jika access_token kadaluarsa, maka addPreferredLocation akan memberikan response expired token.
    • Jika access_token tidak valid, maka addPreferredLocation akan memberikan response error ke JSP.
    • Jika access_token valid, maka addPreferredLocation akan memasukan produk ke DB, dan memberikan response kesuksesan ke JSP.
  4. Jika access_token sudah kadaluarsa atau tidak valid (yang diketahui dari response error ojek online web service), sistem akan me-redirect user ke halaman login.
  5. Untuk make an order, get history, dan lainnya kira-kira memiliki mekanisme yang sama dengan add preferred locations di atas.
  6. Silakan definisikan format object request dan response sesuai kebutuhan anda.

Penjelasan

Berikan penjelasan mengenai konsep diatas.

Basis data sistem

Basis Data non Account Basis Data non Account Basis Data Account Basis Data Account

Konsep shared session

Pembangkitan token dan expire time pada sistem

Kelebihan dan kelemahan dari arsitektur aplikasi tugas ini

Pembagian Tugas

REST :

  1. Generate token : 13515146
  2. Validasi token : 13515131, 13515092
  3. Account Info : 13515146
  4. Update Profile : 13515146
  5. File Upload : 13515146

SOAP :

  1. Add Produce : 13515131
  2. Fungsionalitas Order : 13515131
  3. Fungsionalitas Profile : 13515092
  4. Fungsionalitas History : 13515092
  5. Soap Identity Service : 13515146

Web app (JSP) :

  1. Halaman Login : 13515146
  2. Halaman Register : 13515146
  3. Halaman Profile : 13515092
  4. Halaman Edit Profile: 13515092
  5. Halaman Edit Pref Location: 13515092
  6. Halaman Pick Destination: 13515131
  7. Halaman Pick Driver: 13515131
  8. Halaman Complete Order: 13515131
  9. Halaman History: 13515092

About

Asisten IF3110 2017

Ade | Johan | Kristianto | Micky | Michael | Rangga | Raudi | Robert | Sashi

Dosen : Yudistira Dwi Wardhana | Riza Satria Perdana | Muhammad Zuhri Catur Candra