1 IMPLEMENTASI SISTEM SINGLE SIGN-ON BERBASIS JAVA OLEH : NAMA : NURSYAMSI NIM : DEPARTEMEN TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS SUMATERA UTARA ...
DEPARTEMEN TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS SUMATERA UTARA MEDAN 2009
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
IMPLEMENTASI SISTEM SINGLE SIGN-ON BERBASIS JAVA OLEH: NAMA
:
NURSYAMSI
NIM
:
040402003
Tugas Akhir ini diajukan untuk melengkapi salah satu syarat untuk memperoleh gelar Sarjana Teknik pada DEPARTEMEN TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS SUMATERA UTARA MEDAN Sidang pada tanggal 22 bulan Agustus tahun 2009 di depan Penguji : 1. Fahmi ST, M.Sc
: Ketua Penguji
: ……………….
2. Ori Novanda ST, MT
: Anggota Penguji : ……………….
3. Ali Hanafiah ST, MT
: Anggota Penguji : ………………. Disetujui oleh : Pembimbing Tugas Akhir,
(Soeharwinto, ST. MT) NIP : 132 258 001
Diketahui oleh : Pelaksana Harian Ketua Departemen Teknik Elektro
(Prof.Dr.Ir.Usman Baafai) NIP : 194 610 221 973 021 001 Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
IMPLEMENTASI SISTEM SINGLE SIGN-ON BERBASIS JAVA
OLEH: NAMA
:
NURSYAMSI
NIM
:
040402003
Tugas Akhir ini diajukan untuk melengkapi salah satu syarat untuk memperoleh gelar Sarjana Teknik pada
DEPARTEMEN TEKNIK ELEKTRO FAKULTAS TEKNIK UNIVERSITAS SUMATERA UTARA MEDAN Sidang pada tanggal 22 bulan Agustus tahun 2009 di depan Penguji : 1. Fahmi ST, M.Sc
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
(Soeharwinto, ST. MT) NIP : 132 258 001
ABSTRAK Tugas akhir ini mengimplementasikan sistem Single Sign-On (SSO) berbasis Java dengan menggunakan aplikasi Java Open Single Sign-On (JOSSO). Teknologi
SSO
dapat
mengurangi
faktor
kesalahan
manusia
dengan
menyederhanakan proses login ke berbagai aplikasi web. Implementasi SSO pada aplikasi web dibuat menggunakan metode studi literatur, diskusi, perancangan dan implementasi. Aplikasi web yang dibuat dapat menunjukkan bagaimana proses implementasi SSO dengan menggunakan JOSSO. Dengan adanya aplikasi web berbasis SSO ini maka seorang pengguna hanya perlu mengingat satu buah username dan password (credential) untuk berbagai aplikasi web dan juga seorang pengguna hanya sekali melakukan proses login dan logout ke berbagai aplikasi web. Keyword: credential, SSL, user, role, service provider, identity provider, agent, gateway, session store, identity store, credential store.
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
KATA PENGANTAR
Puji syukur penulis ucapkan kehadirat ALLAH SWT atas rahmat dan karunia yang dilimpahkan sehingga dapat menyelesaikan Tugas Akhir ini. Adapun Tugas Akhir ini dibuat untuk memenuhi syarat kesarjanaan di Departemen Teknik Elektro, Fakultas Teknik Universitas Sumatera Utara, yang penulis beri judul “Implementasi Sistem Single Sign-On Berbasis Java”. Tugas akhir ini penulis persembahkan kepada yang teristimewa yaitu ayahanda, Selamat, ibunda, Nadima, Abang saya Annajmi, dan Zulfajri, serta adik-adik saya Khusnul Firdaus dan Imro Atun Hasanah, yang merupakan bagian hidup penulis yang senantiasa mendukung dan mendoakan dari sejak penulis lahir hingga sekarang. Selama masa perkuliahan sampai masa penyelesaian tugas akhir ini, penulis banyak memperoleh bimbingan dan dukungan dari berbagai pihak. Untuk itu, dengan setulus hati penulis menyampaikan ucapan terima kasih yang sebesar-besarnya kepada : 1. Bapak Soeharwinto,ST, MT, selaku dosen Pembimbing Tugas Akhir, atas segala bimbingan, pengarahan dan motivasi dalam menyelesaikan Tugas Akhir ini. 2. Bapak Ir. Panusur SM.L Tobing, selaku dosen wali penulis, atas bimbingan dan arahannya dalam menyelesaikan perkuliahan. 3. Bapak Ir. Nasrul Abdi, MT selaku Ketua Departemen Teknik Elektro FT-USU dan Bapak Rachmad Fauzi, ST, MT selaku Sekretaris Departemen Teknik Elektro FT-USU.
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
4. Seluruh Staf Pengajar di Departemen Teknik Elektro USU dan Seluruh Karyawan di Jurusan Teknik Elektro Fakultas Teknik Elektro USU. 5. Rekan-rekan yang memberikan sumbangsih ilmu, pikiran, tenaga, alat, tempat, dan transportasi dalam pengerjaan tugas akhir ini yaitu Bang Abu Bakar, Bang Faisal, Ahmad Fausan, M. Salman, Jhoni Hidayat, dan Muhfi Asbin Sagala. 6. Teman-teman angkatan ’04, Tosa, Fauzan, Hafiz, Rudi, Salman, Aris, Bismo, Aulia, Jhoni, Luthfi, Daus, Harry, Muhfi, Adi, Fahmi, Hans, Ijal, Juan, Roy, Dodi Barus, Anhar, Wahyu, Eko, Ronal Trimayudi, Ai, Augus, Sabri, dan teman-teman ’04 lain yang tidak bisa disebutkan satu per satu. 7. Rekan-rekan junior di Elektro Fachrurrazy Rizki Zulkarnaen, Iqri, Luthfi Abdurrahman, Prindi Wibowo, Rifqi, Rahmuddin, Megi , Dedi, Ricky, Apri, Joni Nasution, Salman Alfarisi, Teguh, Supenson, dan Firmanto. 8. Dan pihak-pihak yang tidak dapat penulis sebutkan satu persatu. Akhir kata, tugas akhir ini masih jauh dari sempurna, masih banyak kesalahan dan kekurangan, namun penulis tetap berharap semoga Tugas Akhir ini bisa bermanfaat dan memberikan inspirasi bagi pengembangan selanjutnya
Medan, Agustus 2009 Penulis
Nursyamsi NIM 040402003
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
Tabel 2.2 Perbandingan keunggulan beberapa produk SSO................................
31
Tabel 2.3 Perbandingan kekurangan beberapa produk SSO................................
31
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
DAFTAR KODE
Kode 3.1 Contoh Konfigurasi File josso-cfg.inc ...............................................
37
Kode 3.2 Contoh Konfigurasi File php.ini ........................................................
38
Kode 3.3 Contoh Konfigurasi File josso-gateway-config.xml .........................
43
Kode 3.4 Contoh Konfigurasi File josso-gateway-auth.xml ............................
44
Kode 3.5 Contoh Konfigurasi File josso-credentials.xml ..................................
46
Kode 3.6 Contoh Konfigurasi File josso-cfg.inc ..............................................
46
Kode 4.1 Contoh Konfigurasi File josso-cfg.inc .............................................
54
Kode 4.2 Contoh Konfigurasi File index.php...................................................
55
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
BAB I PENDAHULUAN
1.1 Latar Belakang Otentikasi adalah suatu proses untuk menentukan apakah seseorang berhak mengakses suatu aplikasi web atau tidak. Cara yang paling sederhana adalah dengan menggunakan proses login, seseorang memasukkan username dan password (credential) kemudian diotentikasi apakah credential tersebut valid atau tidak, jika valid maka seseorang tersebut boleh mengakses, jika tidak maka dia tidak boleh mengakses. Sebagian besar aplikasi web saat ini menggunakan cara tersebut, dengan berbagai tambahan proses untuk menambah dan menambal aspek keamanan. Menjadi suatu masalah ketika seorang pengguna memiliki banyak aplikasi web yang membutuhkan otentikasi. Dia harus menghafal banyak credential, walaupun banyak orang yang membuat credential yang sama untuk berbagai aplikasi web. Terdapat masalah lagi jika pengguna membuat satu credential untuk berbagai aplikasi web, karena pengguna harus memasukkan credential berulang kali. Jadi misalkan pengguna akan menggunakan email maka dia harus memasukkan credential, pengguna akan menggunakan FTP maka dia harus memasukkan credential, penggunakan akan menggunakan forum maka dia harus memasukkan credential dan begitu seterusnya. Oleh karena itu sistem Single Sign-On (SSO) ditawarkan sebagai solusi yang tepat dalam permasalahan ini. Mekanisme dari sistem SSO adalah pengguna hanya perlu melakukan satu kali proses otentikasi untuk mengakses ke suatu aplikasi web Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
tanpa harus melakukan otentikasi yang berulang kali, dan juga pengguna hanya perlu mengingat satu buah credential saja. Untuk sistem Single Sign-On yang digunakan adalah JOSSO (Java Opensource Single Sign-On). JOSSO dapat diintegrasikan dengan sistem database untuk menyimpan informasi login pengguna atau dikenal dengan istilah ‘credential store’. Proses otentikasi dari sebuah integrasi sistem harus cepat, sehingga pengguna tidak terlalu lama menunggu proses pemuatan / loading dari halaman aplikasi web.
1.2 Rumusan Masalah Adapun rumusan masalah dari tugas akhir ini adalah : •
Mengimplementasikan sistem SSO pada web service
•
Mengembangkan model aplikasi web yang menggunakan SSO
1.3 Tujuan Penelitian Tugas Akhir ini bertujuan untuk mengimplementasikan sistem Single SignOn (SSO) dengan menggunakan aplikasi berbasis Java yakni JOSSO (Java Opensource Single Sign-On). Applikasi JOSSO ini bertujuan untuk menyederhanakan informasi login yang digunakan pengguna untuk melakukan login ke beberapa aplikasi berbasis web.
1.4 Batasan Masalah Untuk menghindari pembahasan yang meluas maka penulis akan membatasi pembahasan Tugas Akhir ini dengan hal-hal sebagai berikut:
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
1. Membahas masalah implementasi sistem SSO menggunakan JOSSO 2. Membahas web server yang digunakan dalam proses implementasi SSO 3. Membahas database yang digunakan untuk menyimpan informasi credential pengguna
1.5 Metode Penulisan Metodologi penulisan yang digunakan dalam Tugas Akhir ini adalah : 1. Studi Literatur Berupa studi kepustakaan dan kajian dari buku-buku teks pendukung. 2. Diskusi Berupa tanya jawab dengan dosen pembimbing mengenai masalah-masalah yang timbul selama penulisan Tugas Akhir 3. Perancangan Integrasi Sistem Perancangan model yang akan digunakan untuk mengintegrasikan sistem, mulai dari konfigurasi server sampai dengan perancangan halaman-halaman penghubung. 4. Implementasi Melakukan implementasi aplikasi berdasarkan studi literatur, studi diskusi, dan disertai dengan pengujian.
1.6 Sistematika Penulisan Untuk memudahkan pemahaman terhadap Tugas Akhir ini maka penulis menyusun sistematika penulisan sebagai berikut :
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
BAB I
:
PENDAHULUAN Bab ini merupakan gambaran menyeluruh tentang apa yang diuraikan dalam Tugas Akhir, yaitu pembahasan tentang latar belakang,
tujuan
penulisan,
batasan
masalah,
metode
penulisan, dan sistematika penulisan. BAB II
:
TEORI PENDUKUNG Bab ini berisi tentang Teknologi Java, Internet sebagai Sistem Client-Server, Mekanisme Kerja TCP/IP, Metode - Metode Identifikasi dan Otentikasi, Sistem Single Sign-On (SSO), Produk-Produk SSO, Java Open Single Sign-On (JOSSO), Sistem Database.
BAB III
:
KONFIGURASI JOSSO Bab ini membahas tentang instalasi dan konfigurasi JOSSO beserta aplikasi-aplikasi pendukung.
BAB IV
:
IMPLEMENTASI DAN PENGUJIAN JOSSO Bab ini membahas tentang implementasi dan pengujian terhadap sistem SSO dengan aplikasi JOSSO.
BAB V
:
KESIMPULAN DAN SARAN Bab ini berisi tentang kesimpulan dan saran dari aplikasi yang dirancang.
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
BAB II TEORI PENDUKUNG
2.1 Teknologi Java Java adalah suatu teknologi di dunia software komputer, yang merupakan suatu bahasa pemrograman, dan sekaligus suatu platform. Sebagai bahasa pemrograman, Java dikenal sebagai bahasa pemrograman tingkat tinggi. Java mudah dipelajari, terutama bagi programmer yang telah mengenal C/C++. Java merupakan bahasa pemrograman berorientasi objek yang merupakan paradigma pemrograman masa depan. Sebagai bahasa pemrograman Java dirancang menjadi handal dan aman. Java juga dirancang agar dapat dijalankan di semua platform, dan juga dirancang untuk menghasilkan aplikasi – aplikasi dengan performansi yang terbaik, seperti aplikasi database Oracle 8i/9i yang core-nya dibangun menggunakan bahasa pemrograman Java. Sedangkan Java bersifat neutral architecture, karena Java Compiler yang digunakan untuk mengkompilasi kode program Java dirancang untuk menghasilkan kode yang netral terhadap semua arsitektur perangkat keras. Sebagai sebuah platform, Java terdiri atas dua bagian utama, yaitu: •
Java Virtual Machine (JVM)
•
Java Application Programming Interface (Java API) Sun membagi arsitektur Java membagi tiga bagian, yaitu:
• Enterprise Java (J2EE) untuk aplikasi berbasis web, aplikasi sistem tersebar dengan beraneka ragam klien dengan kompleksitas yang tinggi. • Standar Java (J2SE), ini adalah yang biasa dikenal sebagai bahasa Java.
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
• Micro Java (J2ME) merupakan subset dari J2SE dan salah satu aplikasinya yang banyak dipakai adalah untuk wireless device / mobile device.
2.2 Internet sebagai Sistem Client-Server Keuntungan utama dari sistem berbasis client-server adalah bahwa perangkat keras dan perangkat lunak bisa ditempatkan dimana saja sehingga pengguna bisa bekerja secara lebih optimal. Dahulu, di zaman komputer mainframe, komputer mainframe-lah yang menjadi pusat kendali dan mengerjakan semua proses komputasi. Pengguna berinteraksi dengan sistem mainframe melalui terminal– terminal yang dibutuhkan secara langsung ke komputer mainframe. Terminalterminal ini tidak punya kemampuan pemrosesan sama sekali, dan oleh karena itu disebut “terminal dungu” (dumb terminal). Terminal dungu tidak lebih dari sekedar perpanjangan kabel untuk keyboard dan layar monitor, dan hanya berfungsi sebagai alat untuk memasukkan dan melihat data saja.
Gambar 2.1 Konsep Sistem Mainframe Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
Definisi yang banyak dipergunakan untuk menjelaskan sistem berbasis client-server adalah sistem yang memisahkan antara tugas-tugas komputasi antara proses-proses client dan server. Dengan sistem client-server, kekuatan pemrosesan bisa disebarkan (didistribusikan) ke banyak mesin client dan mesin server yang terpisah secara fisik (itu sebabnya disebut distributed system). Misalnya sebuah server web yang mengambil informasi dari database menampilkan hasilnya pada client dengan menggunakan web browser. Server web dan database bisa saja ditempatkan pada satu mesin, namun apabila jumlah client yang melakukan akses ke server semakin banyak dan melebihi kapasitas mesin server, perangkat lunak database dan server web bisa saja dipisahkan dan ditempatkan di mesin kedua, ketiga atau bahkan lebih. Dengan begitu pemrosesan pada sisi server dapat disebarkan ke beberapa mesin, yang memungkinkan efisiensi komputasi. Begitu pula, dengan cara ini, kapasitas server bisa dikembangkan dan ditingkatkan sesuai dengan kebutuhan.
Gambar 2.2 Konsep dasar browser web dan server web Konsep client-server juga lebih cocok ketika dilihat dari arsitektur ntier/layer, dimana client-server termasuk ke kategori 2-tier. Pada saat ini, aplikasiaplikasi besar cenderung mengacu pada arsitektur n-tier (n>3) karena lebih scalable.
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
Misalkan saja untuk 3-tier akan terdapat layer presentasi, aplikasi, dan layer database. Contohnya adalah aplikasi berbasis web, dimana layer presentasi memakai bahasa pemrograman PHP, layer aplikasi memakai Apache sebagai server web, dan layer database memakai MySQL. Dari sudut pandang lain, sistem berbasis client-server juga bisa memanfaatkan browser web untuk meringankan kerja server. Tugas menampilkan informasi dan menyediakan tampilan pengguna (user interface) tidak perlu dilakukan secara langsung oleh server, namun diserahkan sepenuhnya kepada browser web. Dengan hadirnya teknologi pemrograman client-side (bahasa pemrograman yang dijalankan di sisi client) seperti Javascript dan PHP, maka fungsi–fungsi khusus seperti pemeriksaan/validasi input bisa dilakukan oleh browser sebelum data dikirimkan kepada server, sehingga dapat menjamin data yang dikirimkan ke server tidak keliru. Misalnya untuk memastikan bahwa input yang diisikan oleh pengguna adalah sebuah angka dapat dilakukan oleh program client-side sehingga nantinya server tidak perlu lagi memeriksa input tersebut. Hal ini mempercepat kerja server, karena hanya mengerjakan tugas-tugas yang berguna, dan juga karena program untuk client hanya menggunakan browser web yang tidak perlu diupdate jika suatu saat sistem tersebut membutuhkan upgrading. Jadi, setidaknya dalam teori, sistem berbasis client-server memberikan keuntungan yang banyak seperti penggunaan sumber data secara lebih efisien, penyimpanan data terpusat, serta lalu lintas di dalam jaringan menjadi lebih rendah (dibandingkan dengan sistem yang seluruhnya terpusat).
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
2.3 Mekanisme Kerja TCP/IP Transfer Control Protocol/Internet Protocol (TCP/IP) pada dasarnya terdiri dari beberapa protokol yang berbeda, masing-masing dirancang untuk memenuhi tugas-tugas khusus dalam jaringan yang menggunakan TCP/IP. Berkat prinsip ini, tugas masing-masing protokol menjadi jelas dan sederhana. Protokol yang satu tidak perlu mengetahui cara kerja protokol yang lain, sepanjang masih bisa saling mengirim dan menerima data.
Gambar 2.3 Protokol dan network di dalam model TCP/IP Oleh karenanya, TCP/IP menjadi protokol komunikasi data yang fleksibel. Protokol TCP/IP dapat diterapkan dengan mudah di setiap jenis komputer dan interface jaringan, karena sebagian besar isi kumpulan protokol ini tidak spesifik terhadap satu komputer atau jaringan tertentu. Agar TCP/IP dapat berjalan di atas interface jaringan tertentu, hanya perlu dilakukan perubahan pada protokol yang berhubungan dengan interface saja. Model referensi TCP/IP yang ditunjukkan pada Gambar 2.3 menunjukkan empat lapisan dalam model TCP/IP yaitu: Network Access, Internet/IP, Host to Host/Transport dan Application/process. Untuk sistem Single Sign-On (SSO) ini Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
yang berhubungan dengan protokol otentikasi hanya terdapat pada lapisan/layer Application, Transport dan Internet saja. Pada setiap lapisan tersebut akan dilihat dari sisi keamanan/security ini dikarenakan sistem otentikasi berhubungan erat dengan faktor keamanan.
2.3.1 Security Lapisan Aplikasi (Application Layer Security) Implementasi keamanan pada lapisan aplikasi adalah yang paling mudah dan sederhana, jika komunikasi internet melibatkan dua pihak, seperti kasus komunikasi email dan telnet. Pengirim dan penerima mempunyai kesepakatan untuk menggunakan protokol yang sama dan jenis layanan keamanan yang diinginkan. Pada bagian lapisan ini terdapat 2 protokol yang digunakan, yaitu PGP (Pretty Good Privacy) dan SSH (secure shell).
2.3.2 Security Lapisan Transport (Transport Layer Security) Transport Layer Security (TLS) berada antara lapisan aplikasi dan lapisan transport. Pada Gambar 2.4 diperlihatkan, bahwa TLS berada diantara lapisan protokol HTTP (aplikasi) dan protokol TCP (transport). Dengan demikian dapat dinyatakan bahwa lapisan aplikasi dalam hal ini HTTP menggunakan TLS dan TLS menggunakan layanan dari lapisan transport dalam hal ini TCP untuk membawa informasi.
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
Gambar 2.4 Posisi TLS pada layer-layer protokol IP TLS dirancang untuk menyediakan keamanan pada lapisan transport. TLS diperoleh dari suatu protokol keamanan yang disebut dengan SSL (Secure Sockets Layer) yang dirancang oleh Netscape guna menjamin keamanan WWW. TLS adalah bentuk lain dari SSL, yang dirancang oleh IETF (Internet Engineering Task Force) untuk transaksi di internet seperti ditunjukkan oleh Gambar 2.5.
Gambar 2.5 SSL merupakan lapisan terpisah dalam susunan protokol Internet Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
SSL merupakan Protokol berlapis. Dalam tiap lapisannya, sebuah data terdiri dari panjang, deskripsi dan isi. SSL mengambil data untuk dikirimkan, dipecahkan kedalam blok-blok yang teratur, kemudian dikompres jika perlu, menerapkan MAC, dienkripsi, dan hasilnya dikirimkan. Di tempat tujuan, data didekripsi, verifikasi, dekompres, dan disusun kembali. Hasilnya dikirimkan ke klien di atasnya. Cara kerja SSL dapat kita lihat dengan tahapan – tahapan berikut ini: 1.
Klien membentuk koneksi awal ke server dan meminta koneksi SSL.
2.
Bila server yang dihubungi telah dikonfigurasi dengan benar, maka server ini akan mengirimkan public key miliknya kepada klien.
3.
Kien membandingkan sertifikat dari server ke basisdata trusted authorities. Bila sertifikat ini terdaftar, artinya klien mempercayai server tersebut dan akan maju kelangkah 4. Bila sertifikat itu terdaftar, maka pemakai harus menambahkan sertifikat ini ke trusted database sebelum maju ke langkah 4.
4.
Klien menggunakan public key yang didapatnya untuk men-enkrip sesi dan mengirimkan session key ke server. Bila server meminta sertifikat klien di langkah 2, maka klien harus mengirimkannya sekarang.
5.
Bila server dikonfigurasi untuk menerima sertifikat, maka server akan membandingkan
sertifikat
yang
diterimanya
dengan
basisdata trusted
authorities dan akan menerima atau menolak koneksi yang diminta. Bila kondisi ditolak, suatu pesan kegagalan akan dikirimkan ke klien. Bila koneksi diterima, atau bila server tidak dikonfigurasi untuk menerima sertifikat, maka server akan men-decode session key yang didapat dari klien dengan private key
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
milik server dan mengirimkan pesan berhasil ke klien yang sekaligus akan membuka suatu secure data chanel.
2.3.3 Security Lapisan IP (IPSec) IP Security (IPSec) merupakan sekumpulan protokol yang dirancang oleh IETF (Internet Engineering Task Force ) untuk menyediakan layanan keamanan bagi paket data yang dibawa di internet. IPSec tidak didefinisikan untuk menggunakan berbagai metoda enkripsi atau otentikasi yang spesifik. Tetapi IPSec menyediakan sebuah framework dan sebuah mekanisme. IPSec mendefinisikan dua protokol yang digunakan pada IP (lapisan network) seperti : Protokol Authentication Header (AH) dan protokol Encapsulating Security Payload (ESP).
2.4 Metode - Metode Identifikasi dan Otentikasi Elemen interface pengguna yang pertama kali ditemui kebanyakan subjek ketika mengakses sistem informasi adalah identifikasi dan otentikasi. Tahap identifikasi memperkenankan subjek mengklaim sebagai entitas tertentu dengan menunjukkan bukti-bukti identitas. Bukti-bukti tersebut dapat sesederhana ID pengguna atau nomer PIN, atau yang lebih kompleks seperti atribut fisik. Setelah subjek mengklaim suatu identitas, sistem memvalidasi apakah pengguna tersebut terdaftar dalam database pengguna dan membuktikan bahwa subjek tesebut adalah benar-benar sebagai entitas yang diklaimnya. Tahap otentikasi meminta subjek menujukkan informasi tambahan yang berkesusaian dengan informasi tentang subjek tesebut yang telah disimpan. Dua
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
tahap ini sering disebut dengan otentikasi dua faktor, yang memberikan proteksi terhadap subjek yang tidak memiliki otoritas untuk mengakses sistem. Setelah subjek diotentikasi, sistem kontrol akses mengevaluasi hak dan izin subjek untuk mengabulkan atau menolak permintaan akses terhadap objek. Tahap ini disebut dengan tahap otorisasi. Authentication Type
Tabel 2.1 Tipe-tipe Otentikasi Ada tiga kategori/tipe umum dari informasi otentikasi. Praktek pengamanan yang baik biasanya membuat tahap identifikasi dan otentikasinya memerlukan input setidaknya dari dua tipe berbeda. Tiga tipe umum data otentikasi dijelaskan dalam Tabel 2.1. Tipe
otentikasi
yang
paling
umum
dan
paling
mudah
untuk
diimplementasikan adalah otentikasi tipe 1. Yang dilakukan adalah meminta subjek membuat password, passphrase, atau nomer PIN. Alternatif lain adalah menyediakannya untuk pengguna. Kesulitan dalam otentikasi tipe 1 adalah perlunya mendorong subjek untuk membuat frase yang sangat sulit diterka oleh orang lain, namun tidak terlalu rumit sehingga sulit untuk diingat. Password (frase atau PIN) yang sulit diingat akan mengurangi nilai dari password itu sendiri. Hal tersebut dapat
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
terjadi bila administrator terlalu sering memerlukan penggantian password sehingga pengguna kesulitan untuk mengingat password terbaru. Jadi, yang disarankan adalah menjaga password secara rahasia dan aman. Aturan-aturan berikut ini adalah petunjuk yang baik untuk membuat password yang aman. 1. Password setidaknya memiliki panjang 6 karakter. 2. Password setidaknya mengandung sebuah angka atau karakter tanda baca. 3. Tidak menggunakan kosakata atau kombinasi kosakata. 4. Tidak menggunakan data pribadi, seperti tanggal kelahiran, nama anggota keluarga atau binatang peliharaan, atau lagu atau hobi favorit. 5. Tidak sesekali menuliskan password. 6. Membuat password yang mudah diingat tetapi sulit diterka. Data otentikasi tipe 2 lebih rumit untuk dilakukan karena subjek perlu membawa suatu alat atau sejenisnya. Alat tersebut umumnya perangkat elektronik yang menghasilkan suatu nilai yang bersifat sensitif terhadap waktu atau suatu jawaban untuk diinput. Meskipun otentikasi tipe 2 lebih rumit, tipe ini hampir selalu lebih aman dibandingkan dengan otentikasi tipe 1. Otentikasi tipe 3, atau biometrik adalah yang paling canggih. Biometrik menggambarkan pendeteksian dan pengklasifikasian dari atribut fisik. Terdapat banyak teknik biometrik yang berbeda, diantaranya : •
Pembacaan sidik jari/telapak tangan
•
Geometri tangan
•
Pembacaan retina/iris
•
Pengenalan suara
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
•
Dinamika tanda tangan Karena kerumitannya, biometrik adalah tipe otentikasi yang paling mahal
untuk diimplementasikan. Tipe ini juga lebih sulit untuk dipelihara karena sifat ketidak-sempurnaan dari analisis biometrik. Dianjurkan untuk berhati-hati beberapa masalah-masalah utama dari error-error biometrik. Pertama, sistem mungkin menolak subjek yang memiliki otoritas. Ukuran kesalahan semacam ini disebut dengan false rejection rate (FRR). Di sisi lain, sistem biometrik mungkin menerima subjek yang salah. Ukuran kesalahan semacam ini disebut dengan false acception rate (FAR). Yang menjadi masalah adalah ketika sensitifitas sistem biometrik diatur untuk menurunkan FRR, maka FAR meningkat. Begitu juga berlaku sebaliknya. Posisi pengaturan yang terbaik adalah bila nilai FRR dan FAR seimbang, ini terjadi pada crossover error rate (CER).
2.5 Sistem Single Sign-On (SSO) SSO merupakan sebuah teknik dimana pengguna melakukan otentikasi hanya sekali dan otomatis login ke Service Provider (SP) yang diperlukan, tanpa memerlukan interaksi yang manual. Sistem SSO ini dapat meningkatkan kegunaan jaringan secara keseluruhan dan pada saat yang sama dapat memusatkan pengelolaan dari parameter sistem yang relevan. Beberapa arsitektur dari sistem SSO telah muncul, masing-masing dengan berbagai keunggulan dan infastruktur yang berbeda. Sistem Single Sign-On (SSO) menghindari login ganda dengan cara mengidentifikasi subjek secara ketat dan memperkenankan informasi otentikasi untuk digunakan dalam sistem atau kelompok sistem yang terpercaya. Pengguna
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
lebih menyukai SSO, namun Administrator memiliki banyak tugas tambahan yang harus dilakukan. Perlu perhatian ekstra untuk menjamin bukti-bukti otentikasi tidak tersebar dan tidak disadap ketika melintasi jaringan. Tidak penting untuk memahami setiap sistem SSO secara detail. Konsep-konsep penting dan kesulitan-kesulitannya cukup umum bagi semua produk SSO.
2.5.1 Arsitektur Sistem SSO
Gambar 2.6 Pendekatan sistem SSO Solusi sistem SSO didasarkan pada salah satu dari dua tingkat pendekatan: pendekatan script dan pendekatan agent. Pendekatan agent lebih digunakan dalam Tugas Akhir ini karena dianggap lebih cocok untuk aplikasi berbasis web atau service provider (SP). Gambar 2.6 menunjukkan pembagian dari pendekatan sistem SSO. Agent merupakan sebuah program kecil yang berjalan pada tiap-tiap web server. Agent ini membantu mengkoordinir aliran kerja dari SSO dalam hal otentikasi pengguna dan penanganan sesi. Solusi dari arsitektur sistem SSO ditunjukkan oleh Gambar 2.7. Arsitektur SSO memiliki dua bagian utama; agent Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
yang berada di web server /SP dan sebuah server SSO yang berdedikasi yang mana akan dijelaskan berikut ini: •
Agent: Sebuah agent akan menterjemahkan setiap permintaan HTTP yang masuk ke web server. Hanya ada satu agent di tiap-tiap web server, yang mana host bagi aplikasi/SP. Agent tersebut akan berinteraksi dengan browser klien pada sisi pengguna, dan dengan server SSO pada sisi SP.
•
SSO server: Server SSO menggunakan cookies temporer (sementara) untuk menyediakan fungsi manajemen sesi. Sebuah cookies terdiri dari informasi seperti user-id, session-id, session creation time, session expiration time dan lain-lain.
Gambar 2.7 Arsitektur sistem SSO
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
2.6 Produk-Produk SSO Produk-produk SSO yang berbasis open source yang umum digunakan saat ini adalah sebagai berikut: • CAS (Central Authentication Service) CAS adalah sebuah framework untuk Single Sign-On yang dibuat dengan menggunakan bahasa Java. Konsep kerja CAS sebenarnya menggunakan Ticket Granting dimana ketika pengguna melakukan login, maka pengguna akan diberikan ticket (dalam hal ini tersimpan dalam cookies) yang nantinya akan digunakan untuk melakukan otentikasi pada setiap aplikasi web. Jadi di setiap aplikasi web akan dilakukan pengecekan dari ticket yang telah diberikan oleh CAS tersebut. • OpenSSO (Open Single Sign-On) OpenSSO adalah sebuah infrastruktur yang mendukung layanan berbasis identitas, dan implementasi solusi dari Single Sign on (SSO) transparan sebagai komponen keamanan dalam infrastruktur jaringan. OpenSSO ini berbasis pada solusi Identity Management yang dikembangkan oleh Sun. • JOSSO (Java Open Single Sign-On) JOSSO adalah sebuah infrastruktur SSO berbasis J2EE dan opensource yang bertujuan untuk menyediakan solusi bagi sentralisasi, netral platform, otorisasi dan otentikasi pengguna. Berikut ini merupakan perbandingan keunggulan dan kekurangan beberapa produk SSO tersebut:
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
CAS • Terdapat banyak client
OpenSSO • Agent dapat ditempatkan
JOSSO • Menyediakan sebuah
libraries untuk membantu
ke berbagai aplikasi
infrastruktur plugin
mengintegrasikan CAS
server seperti: Apache,
untuk berintegrasi
dengan aplikasi server.
Sun Java System Web
dengan aplikasi server
• Tampilan pada halaman
Server, Microsoft IIS,
yang lain.
login dapat diganti. • Dapat dikonfigurasi
Domino. • Konfigurasi dapat
• Menggunakan layanan web untuk menyatakan
dengan mudah untuk
dilakukan dengan
identitas pengguna
mengaktifkan HTTP.
menulis otentikasi modul
melalui protokol SOAP
• Dilengkapi dengan
• Keamanan layanan web
(Simple Object Access Protokol)
pluggable authenticators
menggunakan SAML
untuk melakukan validasi
(Security Assertion
terhadap LDAP, dll
Markup Language)
dengan aplikasi non-
• Ukuran file 12 MB
• Ukuran file 295 MB
Java (PHP,.Net, dll)
• Dapat berintegrasi
• Ukuran file 45 MB
Tabel 2.2 Perbandingan keunggulan beberapa produk SSO
CAS • Implementasi dasar hanya meliputi HTTPS.
OpenSSO • Tidak mendukung
JOSSO • Tidak mendukung untuk
otentikasi proxy tetapi
beberapa aplikasi server
bisa dibuat sendiri
tertentu.
dengan menggunakan otentikasi API Tabel 2.3 Perbandingan kekurangan beberapa produk SSO Dari ketiga solusi SSO opensource tersebut dapat ditarik kesimpulan bagaimana melakukan pemilihan SSO yang tepat sesuai dengan kebutuhan adalah sebagai berikut:
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
• CAS merupakan pilihan tepat jika: - menggunakan infrastruktur berbasis Spring dengan Acegi - menggunakan manajemen credential sederhana berbasis DB • OpenSSO merupakan pilihan tepat jika: - dibutuhkan dukungan terhadap lingkungan yang terpisah - diperlukan otentikasi menggunakan SSL - ingin untuk menggunakan seluruh fitur dari Sun Java System Access Manager • JOSSO merupakan pilihan tepat jika: - mendukung aplikasi server tertentu seperti Tomcat, Jboss dll Berdasarkan kesimpulan tersebut maka penulis mengangkat JOSSO sebagai solusi SSO dalam Tugas Akhir ini karena JOSSO merupakan platform SSO yang sederhana dan kemudahan dalam melakukan konfigurasinya.
2.6 Java Open Single Sign-On (JOSSO) Java Open Single Sign-On (JOSSO) adalah sebuah infrasturktur SSO berbasis J2EE dan opensource yang bertujuan untuk menyediakan solusi bagi sentralisasi, netral platform, otorisasi dan otentikasi pengguna. JOSSO bisa dikonfigurasi untuk digunakan sebagai contoh skema otentikasi berbasis sertifikat (certificate-based authentication scheme) dengan memperoleh sertifikat pengguna X.509 dari database mengunakan JDBC (Java Database Connectivity). JOSSO menggunakan layanan web untuk menyatakan identitas dari pengguna. Versi JOSSO yang digunakan pada Tugas Akhir ini adalah JOSSO 1.8.
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
2.6.1 Fitur Utama JOSSO Berikut ini merupakan berbagai fitur utama yang ada pada sistem JOSSO: •
Menggunakan J2EE Transparent Single Sign-On dengan cross domain/cross organization.
•
Dapat dijalankan pada Apache Tomcat.
•
Dapat dijalankan pada aplikasi server JBoss.
•
Dapat dijalankan pada aplikasi server Apache Geronimo.
•
Dapat diintegrasikan dengan Spring Acegi.
•
Menyediakan identitas informasi kepada aplikasi web dan EJB (Enterprise Java Bean) melalui masing-masing pada Servlet standar dan EJB Security API.
• Mendukung Strong Authentication menggunakan sertifikat klien X.509. •
Mendukung
LDAP
(Lightweight
Directory
Access
Protocol)
untuk
menyimpan informasi dan credential pengguna. • Mendukung database untuk menyimpan informasi dan credential pengguna. • Menyediakan klien API (Application Programming interface) bagi PHP yang dapat membangun aplikasi PHP yang mendukung SSO. •
Menyediakan klien API bagi Microsoft ASP yang dapat membangun aplikasi ASP yang mendukung SSO.
•
Dapat dijalankan pada kontainer Apache Pluto Portlet.
•
Berdasarkan standard: JAAS (Java Authentication and Authorization Service), Layanan web / SOAP (Simple Object Access Protocol), EJB,
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
Struts/JSP, J2EE. • 100% Java.
2.6.2 Arsitektur Sistem JOSSO Josso terdiri dari tiga unsur utama: • SSO Gateway: Ini merupakan server SSO atau Identity Provider yang berfungsi
menyediakan
layanan
otentikasi
kepada
pengguna
yang
membutuhkan otentikasi melalui aplikasi partner. • SSO Agent: Ini mewakili klien dari Gateway SSO yang mana permintaan otentikasi diserahkan kepada pengguna dan mengelola seluruh aliran otentikasi pengguna. Agent SSO memvalidasi SSO sesi dan memperoleh informasi pengguna terkait dengan layanan web SSO Gateway menggunakan protokol SOAP. •
Partner Application: Ini merupakan sebuah aplikasi web atau Service Provider yang menggunakan layanan Gateway SSO untuk melakukan otentikasi pengguna.
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
Gambar 2.8 Arsitektur sistem JOSSO Berikut ini merupakan aliran otentikasi dari Aplikasi Web yang terintegrasi dengan SSO melalui JOSSO berdasarkan Gambar 2.8: 1. Seorang pengguna meminta sebuah protected resource berupa Aplikasi Web 1, 2 dan 3 yang dijalankan oleh Apache2 pada server JOSSO Agent. 2. JOSSO Agent yang memproteksi Aplikasi Web akan menginterupsi permintaan pengguna dan, karena tidak dapat diidentifikasi maka pengguna akan diarahkan kembali kepada form JOSSO pada server JOSSO Gateway yang dijalankan oleh Tomcat.
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
3. Pengguna memasukkan credentialnya, hal ini tergantung kepada skema otentikasi
yang
dipilih,
pengguna
boleh
meminta
sepasang
username/password atau sebuah X.509 Client Certificate. 4. Pada server JOSSO Gateway akan diproses form submission, kemudian memuatinya dengan credential pengguna dari tempat penyimpanan konfigurasi yaitu MySQL dan memeriksa keabsahannya. 5. Jika credential-nya sah, maka pengguna akan diotentikasi dan sebuah bukti sesi SSO dihasilkan, kemudian menyimpan sesi tersebut ke dalam session store. Pengguna kemudian akan diarahkan kembali ke protected resource yang diminta pada awal proses. 6. JOSSO Agent melindungi aplikasi web ketika menginterupsi permintaan, dan menggunakan module SSO Gateway JAAS Login, kemudian memeriksa keabsahan sesi dan mengambil subjek otentikasi dari Gateway SSO menggunakan SOAP. 7. JOSSO Gateway mengambil sesi penyedia identifikasi dari session store dan memperoleh informasi pengguna yang terkait dari identity store. 8. JOSSO Agent memperkenalkan kembali subjek otentikasi oleh layanan web Gateway SSO melalui HTTP Request dan menanganinya sampai ke target Aplikasi Web 1, 2 dan 3.
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
2.7 Sistem Database Sistem database yang digunakan pada tugas akhir ini adalah MySQL. MySQL adalah sebuah server database SQL multiuser dan multi-threaded. SQL sendiri adalah salah satu bahasa database yang paling populer di dunia. Implementasi program server database ini adalah program daemon 'mysqld' dan beberapa program lain serta beberapa pustaka. MySQL dibuat oleh TcX dan telah dipercaya mengelola sistem dengan 40 buah database berisi 10,000 tabel dan 500 di antaranya memiliki 7 juta baris (kira-kira 100 gigabyte data). Database ini dibuat untuk keperluan sistem database yang cepat, handal dan mudah digunakan. Walaupun memiliki kemampuan yang cukup baik, MySQL untuk sistem operasi Unix bersifat freeware, dan terdapat versi shareware untuk sistem operasi windows.
2.7.1 Keunggulan MySQL Berikut ini merupakan berbagai keunggulan yang ada pada MySQL sebagai database JOSSO: • MySQL merupakan program yang multi-threaded, sehingga dapat dipasang pada server yang memiliki multi-CPU. • Didukung program-program umum seperti C, C++, Java, Perl, PHP, Python, TCL APIs dan lain sebagainya. • Bekerja pada berbagai platform. (tersedia berbagai versi untuk berbagai sistem operasi). • Memiliki jenis kolom yang cukup banyak sehingga memudahkan konfigurasi sistem database.
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
• Memiliki sistem sekuriti yang cukup baik dengan verifikasi host. Mendukung ODBC untuk sistem operasi Microsoft Windows. • Mendukung record yang memiliki kolom dengan panjang tetap atau panjang bervariasi. • dan masih banyak keunggulan lainnya.
2.7.2 Sistem Server Database MySQL Sistem database MySQL memiliki sistem keamanan dengan tiga verifikasi yaitu user(name), password dan host. Verifikasi host memungkinkan untuk membuka sekuriti di 'localhost', tetapi tertutup bagi host lain (bekerja di lokal komputer). Sistem sekuriti ini ada di dalam database MySQl dan pada tabel pengguna. Proteksi juga dapat dilakukan terhadap database, tabel, hingga kolom secara terpisah.
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
BAB III KONFIGURASI JOSSO
3.1 Persiapan Server JOSSO Berikut ini merupakan spesifikasi komputer server yang digunakan dalam melakukan konfigurasi JOSSO: •
Sistem Operasi : Opensuse 11.1
•
Prosesor : AMD Turion X2 dengan kecepatan 2 GHz
•
RAM : 1,5 GB DDR2
•
Hard Disk : 160 GB
•
LAN Card : 1 Gbps Seharusnya ada 3 buah server yang digunakan yaitu: 1 server sebagai JOSSO
Agent, 1 server sebagai JOSSO Gateway, dan 1 server lagi sebagai Sistem Database, tetapi karena hal ini hanya sebagai pengujian implementasi maka server yang digunakan hanya 2 buah saja yaitu: 1 buah server untuk JOSSO Agent dan 1 buah server untuk JOSSO Gateway dan database Mysql. Untuk sistem operasi yang digunakan di server adalah Distribusi Linux Opensuse 11.1 yang sudah terintegrasi dengan berbagai aplikasi pendukung dalam sistem JOSSO.
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
3.2 Instalasi Aplikasi Pendukung Dalam menginstall dan menkonfigurasi JOSSO diperlukan berbagai macam aplikasi pendukung. Adapun aplikasi-aplikasi pendukung tersebut adalah: •
Java SE Development Kit 6 Update 5 (JDK 1.6.0)
•
Apache HTTP Server 2.2.10
•
OpenSSL 0.9.8
•
Apache Tomcat 6.0.18
•
Tomcat Connectors 1.2.26 (mod_jk.so)
•
MySQL Community Server 5.0.67
•
Driver JDBC untuk MySQL (-5.1.7)
•
PHP 5.2.6 Java SE mempunyai peran sebagai platform bagi klien dan server dalam
menjalankan berbagai aplikasi berbasis Java. Sedangkan sistem database yang digunakan adalah MySQL yang mana telah terintegrasi dengan mysql-connectorjava, sehingga dapat terhubung dengan database berbasis Java. Untuk lebih jelas mengenai aplikasi pendukung yang digunakan dalam JOSSO ini dapat dilihat pada Gambar 3.1 berikut:
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
Gambar 3.1 Aplikasi-aplikasi pendukung dalam sistem JOSSO Apache dan Tomcat mempunyai peran yang penting dalam membangun suatu sistem SSO dengan JOSSO. Peran penting yang dimaksud di sini adalah Apache merupakan tempat konfigurasi dari JOSSO Agent sedangkan Tomcat merupakan tempat konfigurasi dari JOSSO Gateway. Tomcat dapat berjalan sebagai sebuah server yang berdiri sendiri (standalone server), meskipun dalam sebuah lingkungan produksi, Tomcat sering digunakan sebagai Java servlet / JSP container bagi server Apache HTTP atau pada Microsoft IIS. Dalam kombinasi ini, Tomcat melakukan eksekusi terhadap Java servlet
dan JSP, sedangkan Apache menjalankan halaman statis HTML dan
melakukan fungsi sebagai server yakni CGI, PHP, SSI, dll. Berikut ini merupakan alasan Tomcat jarang digunakan sebagai sebuah standalone server: •
Tomcat tidak secepat Apache ketika menjalankan halaman statis
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
•
Tomcat tidak dapat dikonfigurasi seperti Apache
•
Tomcat tidak sekuat/sesempurna seperti Apache
•
Tomcat tidak perlu memiliki banyak alamat situs, untuk keperluan fungsionalitas hanya ditemukan dalam modul Apache (seperti Perl, PHP, dll). Berikut ini merupakan proses untuk menjalankan Tomcat dengan Apache
secara bersama: •
Apache memerlukan sebuah module “adapter”, yang mana menggunakan sebuah protokol tertentu, seperti Apache JServ Protocol (AJP) v1.2, v1.3, atau WARP v1.0, untuk berkomunikasi dengan Tomcat melalui TCP port (port 8009 sebagai konfigurasi standard).
•
Ketika Apache menerima sebuah HTTP Request, maka Apache akan memeriksa permintaan tersebut. Jika permintaan tersebut kepunyaan Tomcat, maka adapter kemudian akan mengambil permintaan dan meneruskannya ke Tomcat, seperti yang diilustrasikan pada Gambar 3.2.
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
Gambar 3.2 Proses HTTP Request pada Apache dan Tomcat Ada beberapa modul adapter, seperti modul Apache JServ Protocol (AJP) v1.2 "JServ", modul AJP v1.3 "JK 1.2" dan modul "JK 2". Modul AJP v1.3 "JK 1.2" (mod_jk.so) akan digunakan dalam Tugas Akhir ini. Adapun langkah-langkah instalasi dan konfigurasi semua aplikasi pendukung dapat dilihat di lampiran.
3.3 Instalasi dan Konfigurasi JOSSO 3.3.1 Instalasi dan Konfigurasi JOSSO Gateway Sebelum menginstall JOSSO Gateway terlebih dahulu harus diperhatikan aplikasi pendukung dan aplikasi JOSSO itu sendiri. Berikut merupakan beberapa aplikasi wajib yang harus diinstall. 6.
JDK 1.6.0
7.
Apache Tomcat 6.0.18
8.
JOSSO 1.8 Binaries
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
Untuk JOSSO 1.8 Binaries dapat diunduh di situs resmi JOSSO yaitu http://www.josso.org/. Pertama kali yang harus dilakukan setelah mengunduh aplikasi JOSSO adalah melakukan ekstrak pada paket JOSSO tadi. Setelah seluruh paket diekstrak, maka JOSSO's Deployment Console dapat dijalankan. Sebelum menjalankan console, pastikan terlebih dahulu variable JAVA_HOME Environment mengarah ke folder instalasi JDK. Berikut ini adalah perintahnya: # export JAVA_HOME=/usr/lib/jvm/jre
# cd JOSSO-1.8.0/bin
# ./josso-gsh
Setelah perintah di atas dieksekusi maka akan keluar tampilan berikut:
Gambar 3.3 Tampilan JOSSO's Deployment Console.
JOSSO's Deployment Console akan melakukan seluruh proses instalasi JOSSO, seperti melakukan proses deploy dan konfigurasi dasar dari target dan
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
platform komponen SSO. Semua aktifitas pada console akan direkam melalui sebuah file log yang disimpan pada josso-1.8.0/logs/. Selanjutnya untuk menginstal JOSSO Gateway pada folder Tomcat, jalankan perintah gateway install berikut: # gateway install --target "/opt/apache-tomcat-6.0.18" --platform tc60
Setelah semua proses instalasi JOSSO Gateway pada $TOMCAT_HOME selesai maka akan ditercipta folder-folder JOSSO berikut: •
$ TOMCAT_HOME/lib/josso- * files
•
$ TOMCAT_HOME / webapps / josso folder
3.3.2. Instalasi dan Konfigurasi JOSSO Agent Aplikasi-aplikasi berikut harus dipersiapkan terlebih dahulu sebelum menginstall dan menkonfigurasi JOSSO Agent: •
Apache HTTP Server 2.2.10
•
PHP 5.2.6 dengan modul-modul sebagai berikut: •
PHP GD
•
PHP GetText
•
PHP IMAP expansions
•
PHP mysql, mysqli
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
Buka file JOSSO
yang terletak pada /home/syamsi/Documents/josso-
1.8.0/dist/agents/src/josso-php-agent-1.8.0-.zip. Ekstrak file tersebut ke folder /home/syamsi/Documents sehingga akan muncul folder /josso-php dengan isi sebagai berikut:
Gambar 3.4 Isi folder dari josso-php Kemudian salin folder josso-php-partnerapp ke DocumentRoot Apache HTTP Server. Selanjutnya akan tercipta folder baru di DocumentRoot Apache yakni: srv/www/httdocs/josso-php-partnerapp, sehingga alamat berikut dapat diakses di web browser: http://localhost/josso-php-partnerapp/josso-security-check.php. Langkah selanjutnya adalah mengkonfigurasi JOSSO Agent dengan PHP. Caranya adalah dengan membuat folder baru untuk PHP dan menyalin folder jossophp-inc dengan cara menjalankan perintah berikut: # mkdir /opt/php/includes # cp -r josso-php-inc /opt/php/includes
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
Buka file josso-cfg.inc yang terletak pada
/opt/php/includes/josso-php-
inc/josso-cfg.inc dan edit file tersebut. Hasil modifikasi dapat ditunjukkan pada Kode 3.1. … // Josso agent configuration $josso_gatewayLoginUrl = 'http://localhost:8080/josso/signon/login.do'; $josso_gatewayLogoutUrl = 'http://localhost:8080/josso/signon/logout.do'; // WS client configuration : $josso_endpoint = 'http://localhost:8080'; // This could be also /, it points to the path where JOSSO code is found, for example the josso-security-check.php page. $josso_agentBasecode = "/josso-php-partnerapp"; …
Kode 3.1 Contoh Konfigurasi File josso-cfg.inc Berikut ini adalah penjelasan dari konfigurasi josso-cfg.inc: •
The Gateway Login URL, mewakili URL dimana pengguna akan diarahkan ke akses protected resource, sehingga pengguna memiliki kesempatan untuk melakukan otentikasi sendiri.
•
The Gateway Logout URL, mewakili URL dimana pengguna akan diarahkan pada permintaan logout.
•
The Gateway endpoint, mewakili alamat dari layanan web JOSSO.
•
The PHP Agent code base, merupakan target dari kode JOSSO Agent, contohnya:
,dalam kasus ini targetnya adalah /josso-php-partnerapp.
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
Kemudian edit file php.ini yang ada di $PHP_HOME yang dalam hal ini terletak pada /etc/php5/apache2/php.ini. Hasil modifikasi dapat ditunjukkan pada Kode 3.2. ... include_path = ".:/opt/php/includes" auto_prepend_file = "josso-php-inc/josso.php" ...
Kode 3.2 Contoh Konfigurasi File php.ini Selanjutnya
buka
file
index.php
JOSSO
yang
terletak
pada
/home/syamsi/Documents/josso-1.8.0/dist/samples/apps/josso-partner-php-1.8.0-.zip, ekstrak file tersebut ke folder DocumentRoot Apache HTTP Server untuk menggantikan file index.php yang telah ada. Setelah instalasi selesai, folder /home/syamsi/Documents/josso-1.8.0 dan /home/syamsi/Documents/josso-php dapat dihapus, serta Apache HTTP Server direstart ulang dengan menjalankan perintah berikut: # /etc/init.d/apache2 restart
Untuk menguji apakah JOSSO Agent berhasil diinstall adalah dengan mengakses link berikut: http://localhost/ , sehingga akan menampilkan tampilan pada Gambar 3.5.
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
Gambar 3.5 Aplikasi web sederhana pada JOSSO Agent Jika diklik pada tulisan “here” maka akan diarahkan ke JOSSO Gateway seperti ditunjukkan pada Gambar 3.6.
Gambar 3.6 Tampilan JOSSO Gateway
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
3.4 Konfigurasi Database JOSSO 3.4.1 Pembuatan Skema Pengguna dan Role Dalam pembuatan skema pengguna dan role, hal pertama yang harus dilakukan adalah pembuatan table untuk pengguna dan role. Ada 4 macam table yang akan dibuat diantaranya adalah: •
JOSSO_USER : berisi semua pengguna yang akan melakukan sign-on.
•
JOSSO_ROLE : berisi semua role bagi pengguna yang terhubung
•
JOSSO_USER_ROLE : berisi role yang berhubungan dengan setiap pengguna.
•
JOSSO_USER_PROPERTY : berisi tambahan properti bagi pengguna, seperti data pribadi, dan lain-lain. Adapun ER Diagram untuk skema pengguna dan role dapat dilihat pada
gambar berikut:
Gambar 3.7 ER Diagram pengguna dan role Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
Pembuatan skrip DDL ( Data Definition Language ) SQL berdasarkan skema ER Diagram pengguna dan role seperti pada Gambar 3.7, kemudian skrip DDL tersebut disimpan dengan nama josso-ddl.sql dan dapat dilihat di lampiran. Selanjutnya skrip DDL tersebut dieksekusi ke dalam database MySQL.
3.4.2 Pembuatan Sampel Pengguna dan Role Setelah selesai membuat skema database, maka langkah selanjutnya adalah menambahkan dokumen sampel pengguna dan role. Sehingga pengguna tersebut dapat melakukan sign-on ke JOSSO. Ada tiga role yang akan dibuat yaitu: •
role1
•
role2
•
role3 Selanjutnya adalah pembuatan dua pengguna dan menghubungkannya ke
role yang telah dibuat: •
user1: merupakan bagian dari ‘role1’ dan ‘role2’.
•
user2: merupakan bagian dari ‘role3’. Langkah selanjutnya menghubungkan tiga properti kedua pengguna yang
baru saja dibuat: •
user.name: tempat menyimpan first name untuk pengguna.
•
user.lastName: tempat menyimpan last name untuk pengguna.
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
•
user.registrationDate: tempat menyimpan pengguna yang telah didaftarkan. Selanjutnya pembuatan skrip DML (Data Manipulation Language) yang
kemudian akan disimpan sebagai josso-users.sql dan dapat dilihat pada lampiran.
3.4.3 Konfigurasi Identity Store Untuk menghubungkan database JOSSO dengan MySQL diperlukan driver JDBC. Berikut ini merupakan cara menginstal driver JDBC untuk MySQL: •
Unduh
aplikasi
JDBC
Driver
untuk
MySQL
di
http://www.mysql.com/products/connector/ •
Ekstrak file yang ada di dalam file zip yaitu mysql-connector-java-5.1.7bin.jar, ke folder $ TOMCAT_HOME / webapps / josso / WEB-INF / lib . Tempat penyimpanan konfigurasi database yang digunakan untuk
menyimpan identitas informasi pengguna JOSSO terletak pada file yaitu: jossogateway-db-stores.xml. Hasil modifikasi dapat ditunjukkan pada Kode 3.3. ...
userPropertiesQueryString="SELECT NAME, VALUE FROM JOSSO_USER_PROPERTY WHERE LOGIN = ?" resetCredentialDml="UPDATE JOSSO_USER SET PASSWORD = ? WHERE LOGIN = ?" relayCredentialQueryString="SELECT LOGIN FROM JOSSO_USER WHERE #?# = ?"/> ...
Kode 3.3 Contoh Konfigurasi File josso-gateway-db-stores.xml Sedangkan untuk konfigurasi dalam menentukan database yang akan digunakan adalah terletak pada file josso-gateway-config.xml. File tersebut diedit dengan menjadikan josso-gateway-db-stores sebagai tempat database bagi pengguna JOSSO. Hasil modifikasi dapat ditunjukkan pada Kode 3.4. ... <s:import resource="josso-gateway-db-stores.xml" /> <s:import resource="josso-gateway-stores.xml" /> <s:import resource="josso-gateway-ldap-stores.xml" /> --> ...
Kode 3.4 Contoh Konfigurasi File josso-gateway-config.xml
3.4.4 Konfigurasi Skema Basic Authentication Setelah melakukan konfigurasi dari identity store, tahap selanjutnya adalah melakukan konfigurasi skema basic authentication. Dalam kasus ini properti has Algorithm dan hasEnconding akan dihapus dari konfigurasi standard, karena password yang akan digunakan dalam konfigurasi ini adalah dalam bentuk plaintext.
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
Konfigurasi skema otentikasi dapat ditemukan pada file josso-gateway-auth.xml. Hasil modifikasi dapat ditunjukkan pada Kode 3.5. ... <s:ref bean="josso-identity-store"/> <s:ref bean="josso-simple-key-adapter"/> ...
Kode 3.5 Contoh Konfigurasi File josso-gateway-auth.xml
3.5 Konfigurasi SSL di JOSSO Gateway Untuk konfigurasi SSL pada Tomcat dapat dilihat di lampiran. Berikut ini merupakan konfigurasi SSL yang dilakukan pada JOSSO Gateway: 1. Pembuatan sertifikat klien bagi pengguna 'user1' adalah dengan menjalankan perintah berikut: # openssl genrsa -des3 -out user1.key 1024
2. Selanjutnya adalah membuat CSR (Certificate Signing Request) untuk CA (Certification Authority) dengan menjalankan perintah berikut: # openssl req -key user1.key -new -out user1.csr
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
Perintah ini akan menghasilkan sebuah file bernama user1.csr yang berisi CSR. 3. Pengesahan CSR oleh CA dapat dilakukan dengan menjalankan perintah berikut: # openssl x509 -req -in user1.csr -out user1.crt -sha1 -CA myca.crt -CAkey myca.key -CAcreateserial -days 3650
4. Setelah private key dan publick key dihasilkan selanjutnya adalah mempaketkan kedua key tersebut ke dalam format PKCS12 dengan menjalankan perintah berikut: # openssl pkcs12 -export -inkey user1.key -in user1.crt -out user1.pfx
Perintah tersebut akan menghasilkan file user1.pfx yang kompatibel hampir semua browser. Kemudian buka browser Firefox dan impor file tersebut. 5. Setelah konfigurasi SSL pada klien selanjutnya adalah konfigurasi SSL pada server Tomcat. Edit file /opt/apache-tomcat-6.0.18/lib/josso-credentials.xml file dan tambahkan sebuah credential baru bagi pengguna 'user1' seperti yang ditunjukkan pada Kode 3.6. <josso-credentials> user1usernameuser1password7ea2bd72bfc7dabdfecc0b5760ebcf52userCertificate -----BEGIN CERTIFICATE----MIIDjjCCAvegAwIBAgIBAjANBgkqhkiG9w0BAQQFADCBijELMAkGA1UEBhMCVVMx DDAKBgNVBAgTA04vQTEMMAoGA1UEBxMDTi9BMRswGQYDVQQKExJKT1NTTyBPcmdh Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
Kode 3.6 Contoh Konfigurasi File josso-credentials.xml 6. Langkah selanjutnya adalah mengkonfigurasi SSL pada JOSSO Agent . Edit file /opt/php/includes/josso-php-inc/josso-cfg.inc seperti yang ditunjukkan pada kode 3.7. … // Josso agent configuration $josso_gatewayLoginUrl = 'https://localhost:8443/josso/signon/login.do'; $josso_gatewayLogoutUrl = 'https://localhost:8443/josso/signon/logout.do'; // WS client configuration : $josso_endpoint = 'http://localhost:8080'; ...
Kode 3.7 Contoh Konfigurasi File josso-cfg.inc
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
7. Untuk menguji apakah SSL sudah terintegrasi dengan JOSSO Gateway dapat dilakukan dengan mengakses alamat berikut pada browser Firefox: https://localhost:8443/josso/signon/login.do Sehingga akan muncul tampilan sebagai berikut:
Gambar 3.8 Tampilan JOSSO Gateway yang sudah terintegrasi dengan SSL Pada Gambar 3.8 terlihat alamat http://localhost:8080/josso/signon/login.do berubah menjadi https://localhost:8443/josso/signon/login.do yang ditandai dengan lingkaran berwarna merah. Ini membuktikan SSL telah berhasil diintegrasikan dengan JOSSO Gateway.
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
BAB IV IMPLEMENTASI DAN PENGUJIAN JOSSO
4.1 Topologi Jaringan Server untuk melakukan implementasi dan pengujian JOSSO dapat dibagi menjadi dua yaitu: • Server untuk JOSSO Gateway yang dijalankan oleh Tomcat dan terkoneksi dengan database MySQL •
Server untuk JOSSO Agent yang berupa Aplikasi Web yang dijalankan oleh Apache 2 Kedua server JOSSO tersebut ditempatkan pada sebuah jaringan dengan
topologi seperti ditunjukkan pada Gambar 4.1.
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
Gambar 4.1. Implementasi jaringan JOSSO
4.3 Implementasi Aplikasi Web tanpa JOSSO Untuk membuat Aplikasi Web tanpa josso dapat dilakukan dengan menggunakan bahasa PHP dan CSS yang akan terkoneksi ke database. Aplikasi Web yang akan dibuat adalah sebanyak 3 aplikasi yang terdiri dari: Aplikasi Web 1, 2 dan 3. Berikut ini merupakan file-file yang ada pada Aplikasi Web tanpa josso:
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
Gambar 4.2 Isi dari folder Aplikasi Web 1, 2 dan 3 Untuk penjelasan mengenai file-file yang ada pada gambar 4.2 adalah sebagai berikut: •
index.php : merupakan tampilan login dari Aplikasi Web
•
checklogin.php : merupakan script PHP yang berfungsi melakukan koneksi ke database MySQL
•
login_success.php:
merupakan
tampilan
apabila
pengguna
berhasil
melakukan otentikasi •
folder images : berisi image dengan format PNG yang dibutuhkan oleh CSS
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
•
folder CSS : berisi script CSS yang mengatur tampilan pada index.php dan login_success.php.
4.4 Implementasi Aplikasi Web dengan JOSSO Untuk mengimplementasikan aplikasi web di dalam server JOSSO Agent diperlukan sebuah halaman JOSSO berbasis PHP. Berikut ini adalah cara untuk menjadikan Aplikasi Web agar terintegrasi dengan JOSSO Agent: 1.
Ekstrak file yang ada pada josso-1.8.0/dist/agents/src/ josso-php-agent-1.8.0.zip. Sehingga
akan
menghasilkan
folder
josso-php-agent-1.8.0/josso-php-
partnerapp/ yang berisi file sebagai berikut: •
josso-login.php
•
josso-logout.php
•
josso-security-check.php
2 . Salin file pada folder josso-php-agent-1.8.0/josso-php-partnerapp/ ke lokasi Aplikasi Web yaitu /srv/www/httdocs/ dengan menjalankan perintah berikut di terminal: # cd ./josso-php-agent-1.0.8/ # cp -r josso-partnerapp /srv/www/htdocs/Aplikasi Web JOSSO 1 # cp -r josso-partnerapp /srv/www/htdocs/Aplikasi Web JOSSO 2 # cp -r josso-partnerapp /srv/www/htdocs/Aplikasi Web JOSSO 3
Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
3.
Tambahkan nama aplikasi web pada file /opt/php/includes/josso-php-inc/jossocfg.inc .
Hasil modifikasi dapat ditunjukkan pada Kode 4.1.
…. $josso_agentBasecode = "/Aplikasi Web JOSSO 1"; $josso_agentBasecode = "/Aplikasi Web JOSSO 2"; $josso_agentBasecode = "/Aplikasi Web JOSSO 3"; …
Kode 4.1 Contoh Konfigurasi File josso-cfg.inc 4. Untuk konfigurasi php pada index.php yang terletak pada Aplikasi Web JOSSO 1, 2, dan 3 di folder /srv/www/htdocs/Aplikasi Web JOSSO 1 dapat ditunjukkan pada kode 4.2. ... getUserInSession(); $sessionId = $josso_agent->getSessionId(); // Check if user is authenticated if (isset($user)) { // Display USER INFORMATION // Username associated to authenticated user echo '
USER INFORMATION
'; echo 'Username : ' . $user->getName() . '
'; // Get a specific user property echo 'user.name=' . $user->getProperty('user.name') . '
'; // Get all user properties $properties = $user->getProperties(); if (is_array($properties)) { Nursyamsi : Implementasi Sistem Single Sign-On Berbasis Java, 2009.
foreach ($properties as $property) { echo $property['name'] . '=' . $property['value'] . ' '; } } // Get all user roles $roles = $josso_agent->findRolesBySSOSessionId($sessionId); echo '
Roles
'; foreach ($roles as $role) { echo $role->getName() . ' '; } // Check if user belongs to a specific role if ($josso_agent->isUserInRole('role1')) { echo '
getUserInSession(); $sessionId = $josso_agent->getSessionId(); // Check if user is authenticated if (isset($user)) { // Display USER INFORMATION // Username associated to authenticated user echo '
USER INFORMATION :
'; echo 'Username : ' . $user->getName() . '
'; // Get a specific user property // echo 'user.name=' . $user->getProperty('user.name') . '
'; // Get all user properties $properties = $user->getProperties(); if (is_array($properties)) { foreach ($properties as $property) {
74
// echo $property['name'] . '=' . $property['value'] . ' '; } } // Get all user roles $roles = $josso_agent->findRolesBySSOSessionId($sessionId); echo '
Roles :
'; foreach ($roles as $role) { echo $role->getName() . ' '; } // Check if user belongs to a specific role if ($josso_agent->isUserInRole('role1')) { echo '