Implementasi SSO (Single Sign On) pada Inhouse Aplikasi Ditjen Bea dan Cukai
Project saya kali ini adalah mengimplementasikan sistem SSO (single sign on) yang telah aku buat sebelumnya. Inti dari sistem SSO ini adalah sebagai tools untuk mengintegrasikan proses authentikasi user ketika mengakses banyak aplikasi. Manfaat yang paling besar yaitu kemudahan user dalam mengakses banyak aplikasi cukup dengan sekali login saja. Sistem SSO yang aku buat telah aku jelaskan secara singkat di postinganku sebelumnya yaitu :
- https://ahsanfiles.wordpress.com/2011/02/20/step-by-step-membuat-server-single-sign-on-sso/
- https://ahsanfiles.wordpress.com/2011/02/24/membangun-sso-server-untuk-implementasi-single-sign-on/
- https://ahsanfiles.wordpress.com/2011/09/28/mengintegrasikan-banyak-sistem-user-management-menggunakan-single-sign-on-sso/
Sekilas tentang pengembangan aplikasi di Direktorat Jenderal Bea dan Cukai (DJBC)
DJBC adalah sebuah instansi pemerintahan di bawah Kementerian Keuangan yang bertugas melakukan pelayanan dan pengawasan terhadap lalu lintas perdagangan internasional di Indonesia. Bidang yang diawasi adalah Kepabeanan dan Cukai. DJBC Memiliki banyak aplikasi yang memiliki fungsi sendiri-sendiri.
DJBC adalah sebuah instansi pemerintahan di bawah Kementerian Keuangan yang bertugas melakukan pelayanan dan pengawasan terhadap lalu lintas perdagangan internasional di Indonesia. Bidang yang diawasi adalah Kepabeanan dan Cukai. DJBC Memiliki banyak aplikasi yang memiliki fungsi sendiri-sendiri.
Dalam rangka menuju sistem pelayanan yang canggih, high availability, high interoperability, scalable, secure dan easy acces maka DJBC dalam mengembangkan sistem aplikasinya menggunakan platform yang bisa memenuhi kebutuhan di atas. Salah satu pendekatannya adalah aplikasi baru yang dibangun berbasis web (bukan desktop) sehingga bisa diakses dari manapun asalkan ada jaringan internet dan intranet.
Kemudian untuk memenuhi kebutuhan user (pengguna jasa dan pegawai) maka lahirlah berbagai macam aplikasi web yang masing-masing aplikasi memiliki fungsi yang khusus. Masing-masing bagian akan memiliki aplikasi yang sesuai dengan tugas dan jenis pekerjaanya. Yang menjadi masalah adalah banyaknya jenis aplikasi yang harus diakses user untuk menjalankan tugasnya, mengharuskan user login di setiap aplikasi. Hal ini sangat menyusahkan pegawai karena :
- Pegawai harus login pada setiap aplikasi yang diakses
- Pegawai harus memanage user id dan password untuk setiap aplikasi
Lha kalau aplikasinya dijadikan satu kemudian didalamnya disediakan semua modul dan menu yang sama dengan di aplikasi yang berdiri sendiri-sendiri kan user akan mudah hanya cukup satu user id password sudah dapat mengakses aplikasi, tinggal di dalam aplikasi itu di definisikan hak dan kewenagnan sesuai dengan tupoksinya (tupoksi = tugas pokok dan fungsi). Atau dengan kata lain, aplikasi-aplikasi itu digabung menjadi sebuah aplikasi besar.
Itu bukan solusi yang bagus, bukan solusi yang bisa diterapkan dengan mudah dengan melihat karakteristik masing-masing aplikasi itu sendiri. Bebeapa hal yang menjadi pertimbangan mengapa aplikasi di DJBC dibangun terpisah antara satu dan lainnya adalah :
- Ada aplikasi core (utama) dan ada aplikasi pendukung yang masing-masing memiliki prioritas managemen down time yang berbeda-beda. Aplikasi core tidak boleh mati sementara aplikasi pendukung jika down tidak akan mempengaruhi pelayanan
- Ada aplikasi yang hits aksesnya tinggi dan ada yang kecil. Aplikasi yang jumlah aksesnya tinggi harus memiliki server yang kuat, sehingga mampu menangani request user yang besar. Sementara aplikasi yang jumlah aksesnya kecil bisa ditempatkan di server yang secukupnya asal bisa diakses lancar sudah cukup.
- Ada aplikasi yang menangani data yang besar- besar, ada aplikasi yang tugasnya memproses data yang kecil-kecil. Aplikasi yang berat juga mengharuskan server, database dan jaringan yang kuat sehingga proses data dapat berjalan dengan baik. Sementara aplikasi yang ringan tidak membutuhkan resource yang besar.
Tiga hal di atas saja sudah menggugurkan ide bahwa semua aplikasi bisa dijadikan satu tempat. Keuntungannya adalah :
- Managemen server yang lebih fokus
- Jika ada aplikasi yang down, tidak semua aplikasi ikutan mati
- Lebih mudah melakukan managemen aplikasi dalam hal misalnya maintenance, update dan sejenisnya, Bayangkan kalau jadi satu, kalau ada update yang mengharuskan restart server, maka semua layanan akan terhenti.
- Pengembangan aplikasi juga lebih ringan karena bisa dibagi-bagi lebih kecil. Kalau dijadikan satu dari proses development, deployment dan running juga akan berat
Tetapi sekarang Bea Cukai sudah memiliki solusi yang canggih yaitu menggunakan sistem:
- Single Sign On (SSO) yaitu sistem yang memungkinkan seorang user cukup sekali login dan bisa mengakses semua aplikasi sesuai hak dan kewenangannya.
- Service Oriented Architecture (SOA) yaitu sebuah teknologi pegembangan aplikasi yang memungkinkan melakukan integrasi beberapa aplikasi ke dalam sebuah environment data sehingga antar aplikasi bisa saling berkomunikasi / melakukan pertukaran data sehingga lebih efisien dan data yang dikelola lebih ramping tetapi bisa memenuhi semua kebutuhan sistem. Khusus untuk implementasi SOA di Bea dan Cukai bisa saya tulis lain kali.
Nah dalam tulisan ini, aku akan memaparkan tentang implementasi SSO di DJBC. Mulai dari sejarah, teknologi apa yang dipakai, cara melakukan implementasi, dan seperti apa wujudnya akan saya akan sharing di sini. Semua yang berkaitan dengan SSO aku kembangkan sendiri tentunya dengan mempelajari dan menggunakan requirmen (kebutuhan) di DJBC. Hal-hal yang dapat aku sharing di sini adalah yang bersifat umum saja, untuk hal-hal teknis tidak dapat aku tulis di sini karena merupakan rahasia perusahaan
Sejarah Singkat SSO di DJBC
Kebutuhan menggunakan SSO lahir dari ide agar bagaimana seorang user bisa mengakses beberapa aplikasi hanya dengan sekali login saja. Bersama temen-temen developer yang lain, aku mencari dan mempelajari sistem SSO yang sudah ada. Ada beberapa jenis yang waktu itu aku buka diantaranya adalah JOSSO, Open SSO sampai LDAP. Tetapi tidak membuahkan hasil yang pas sesuai dengan kebutuhan yaitu integrasi yang otomatis dengan sistem kepegawaian di DJBC. Kebutuhan berikutnya adalah tahu kode sumber sistem SSO itu sehingga dapat melakukan update dengan mudah dan cepat sesuai kebutuhan.
Kebutuhan menggunakan SSO lahir dari ide agar bagaimana seorang user bisa mengakses beberapa aplikasi hanya dengan sekali login saja. Bersama temen-temen developer yang lain, aku mencari dan mempelajari sistem SSO yang sudah ada. Ada beberapa jenis yang waktu itu aku buka diantaranya adalah JOSSO, Open SSO sampai LDAP. Tetapi tidak membuahkan hasil yang pas sesuai dengan kebutuhan yaitu integrasi yang otomatis dengan sistem kepegawaian di DJBC. Kebutuhan berikutnya adalah tahu kode sumber sistem SSO itu sehingga dapat melakukan update dengan mudah dan cepat sesuai kebutuhan.
Kemudian karena tidak menemukan yang sesuai (atau karena tidak tahu cara menggunakannya) akhirnya aku memutuskan untuk mencoba membuat sistem SSO sendiri. Penuh perjuangan dan duka. Mulai dari sering tidur di kantor, pulang larut malam dan nggak mandi. (kalau alasan yang terakhir sih kayaknya bukan karena efek SSO deh🙄 ) . Sedikit demi sedikit sistem SSO yang aku kembangkan dapat berjalan normal. Saat ini tinggal tes keamanan dan tes beban saja.
Untuk nama SSO yang aku buat ini, sebenarnya masih ada hal yang belum bisa aku tetapkan yaitu masalah nama. Pada awalnya aku kasih nama DJBC SSO Service, kemudian aku ganti menjadi CSSO : Customs Single Sign On, tetapi nama ini kurang mencerminkan Bea Cukai. Dan sampai tulisan ini aku buat, namanya adalah ICSA : Indonesian Customs Single Authentication.
Teknologi yang dipakai
Dalam membangun SSO ini aku menggunakan Java EE 6 sebagai bahasa pemrogramannya. Pilihan ini karena hal-hal sebagai berikut :
Dalam membangun SSO ini aku menggunakan Java EE 6 sebagai bahasa pemrogramannya. Pilihan ini karena hal-hal sebagai berikut :
- Java bisa running di mesin apapun yang penting ada JVM yang terinstall. Jadi apapun mesinnya nanti mau windows, aix, solaris ataupun linux, SSO yang aku kembangkan bisa dipasang.
- Interoperabilitas java yang tinggi dengan banyak sistem, sehingga bisa berkomunikasi dengan sistem lain dengan mudah. Nantinya client dari SSO ini bisa menggunakan bahasa pemrograman yang lain seperti .NET atau PHP atau lainnya menggunakan xml melalui web service.
- Menurutku java lebih aman dengan desain security-nya dari defaultnya. Apalagi nantinya ketika dikombinasikan dengan os server yang high security dari lahirnya seperi aix atau solaris atau juga red hat. Pengalamanku pakai os windows, nggak pede kalau nggak pakai antivirus. Kemudian juga masih dipusingkan dengan update antivirusnya.
Yah tiga alasan itu yang akhirnya membuatku memilih java sebagai bahasa pemrograman untuk SSO yang aku kembangkan. Padahal tadinya aku mau membuat server SSO ini menggunakan PHP karena lebih mudah dalam development dan deployment. Tetapi ketika terbentur masalah interoperabilitas dan fleksibilitas server, php memiliki kekurangan yaitu ketika dipasang dalam mesin aix atau solaris, yang arsitekturnya bukan prosesor intel, pengalamanku ada penurunan performa.
ImplementasiUntuk masalah implementasi, terbilang cukup mudah karena semua aplikasi yang kembangkan menggunakan java sebagai bahasa pemrogramannya. Aku cukup membuat library sebagai agen SSO yang akan ditanamkan di server aplikasi yang akan bergabung dengan sistem SSO untuk masalah authentikasinya. Agen SSO inilah yang akan mengurus proses authentikasi aplikasi yang sedang diakses oleh user. Jadi cukup memasang library ini pada server aplikasi dan sedikut konfigurasi, maka sebuah aplikasi akan bisa diakses dengan single authentication oleh SSO Server.
Cara kerjanya adalah :
- Ada sebuah SSO server yang bertugas untuk melakukan authentikasi user ketika akan mengakses aplikasi.
- Ada banyak aplikasi web yang akan menggunakan SSO server sebagai tempat untuk melakukan proses login terhadap aplikasi. Dengan kata lain, di masing-masing aplikasi tidak ada form login. Form login terpusat di SSO Server.
- Ada sebuah library yang menjadi agen SSO Server yang ditanam di masing-masing server aplikasi web yang tergabung dalam SSO.
Screenshot
Berikut ini beberapa tampilan SSO yang aku kembangkan dari beberapa versi yang sempat aku capture tampilannya.
Berikut ini beberapa tampilan SSO yang aku kembangkan dari beberapa versi yang sempat aku capture tampilannya.
Versi I (DJBC SSO Service)
Tampilan halaman setelah login, di sini user tinggal memilih aplikasi yang dia berhak mengakses. Ketika link aplikasi di klik, aplikasi akan tampil dalam keadaan sudah login.
Versi II (CSSO)
Tampilan halaman setelah login, yang tadinya aplikasi yang bisa diakses dalam bentuk row tulisan, sekarang diganti menjadi icon aplikasi agar lebih mudah dan “eye catching” atau dalam bahasa inggrisnya artinya “enak dan mudah dilihat mata”
Perlu aku klarifikasi, icon aplikasi sama sekali tidak berniat meniru desain icon aplikasi pada produk aple. Pada saat desain aku sama sekali nggak melihat bahwa aku meniru, aku hanya membuat bentuk icon itu sekenanya. Lha wong waktu itu aku nggak punya produk aple satupun. Tapi setelah launching versi tiga ini, user pada berkomentar bahwa tampilannya mirip icon pada produk aple. Yaaa ketidak sengajaan lah…
Versi III (ICSA)
Pada versi ini, tampilannya sama dengan versi dua hanya namanya saja yang aku ganti menjadi ICSA : Indonesian Customs Single Authentication. He he he, ternyata mencari nama itu susah yak. Kadang nggak pantas, kadang juga sudah ada yang menggunakanannya. Tapi itulah yang terjadi. Perubahan nama ini karena saking bingungnya untuk mencari identitas sistem SSO yang spesial aku buat untuk Bea Cukai.
Versi IV (CEISA)
Akhirnya pada tahun 2012 ini, Ditjen Bea dan Cukai telah membuat sebuah project besar yaitu untuk membangung sistem aplikasi yang baru di bawah nama CEISA (Customs and Excise Information System and Automation). Dan ahirnya nama ICSA akhirnya membuat user malah bingung. Ada ICSA, ada CEISA. Akhirnya setelah diadakah pembahasan yang mendalam, akhirnya Sistem SSO ini dijadikan pintu gerbang akses aplikasi pada sistem CEISA. Jadi CEISA ini seolah menjadi naungan nama untuk aplikasi-aplikasi yang ada. Dan artinya CEISA menjadi nama SSO juga. Dan endingnya halaman Login aplikasi di ubah namanya menjadi halaman CEISA. Tampilannya seperti ini:
Pada versi ini terdapat penambahan beberapa fitur yaitu:
- Implementasi multi group akses untuk seorang user pada sebuah aplikasi. Yaitu memungkinkan seorang user memiliki beberapa kewenangan sekaligus. Misalnya dia sebagai admin dan sebagai petugas operasional. Kalau sebelumnya satu user hanya bisa memiliki satu kewenangan saja. Contohnya dulu seorang admin ya admin saja, tidak bisa merangkap tugas sebagai operasional.
- Pembatasan akses aplikasi dari kantor-kantor cabang. Jadi hanya aplikasi yang sudah diimplementasikan di sebuah kantor yang bisa diakses dari kantor tersebut.
- Pembatasan jumlah login user. Yaitu defaultnya ketika seorang user sudah login di sebuah pc, maka dia tidak bisa lagi login di tempat lain. Tetapi untuk beberapa user dapat di setting dia bisa dapat login di beberapa tempat.
Kemudian untuk Tampilan pilihan aplikasi aku tambahkan informasi mengenai Single Sign On dan Single Sign Out terhadap user. Agar ketika mereka sedang mengakses beberapa aplikasi sekaligus, mengerti konsep SSO yaitu terutama ketika Sign Out salah satu makan aplikasi lain yang sedang dibuka juga akan sign out:
Versi V (Dalam pengembangan sampai sekarang)
Dan sebagai penutup tulisan ini, tentunya sistem ini akan aku kembangkan terus agar bisa memenuhi kebutuhan, agar lebih aman dan high availaibility.
Tidak ada komentar:
Posting Komentar