Jurnal . ………….. Vol. XX …, No. X, Bulan 20XX, XX-XX
1
Implementasi Single Sign On Menggunakan Centralized Authentication Service Pada Aplikasi Web Multiplatform Andrea Dika Pradana1, Yusapril Eka Putra2 , dan Ibnu Surya3 Jurusan Komputer Politeknik Caltex Riau Jl. Umbansari no.1 Rumbai Pekanbaru 28265 1
[email protected],
[email protected], 3
[email protected] Abstrak
Web adalah sebuah media informasi dan komunikasi yang cukup populer saat ini. web dapat diakses melalui berbagai perangkat yang terhubung ke jaringan. Karena web bersifat multi platform banyak aplikasi web yang dikembangkan untuk memenuhi kebutuhan tiap-tiap individu. Seiring dengan banyaknya aplikasi web yang digunakan oleh user, user terkadang harus menghafal kombinasi username dan password lebih dari satu. Oleh karena itu munculah teknologi login yang dikenal dengan Single Sign On (SSO). SSO adalah suatu teknik yang memungkinkan user untuk mengakses resource yang berbeda tanpa harus menginputkan username dan password untuk login kembali. Dengan SSO, user tidak perlu melakukan login kembali saat berpindah antar aplikasi. Sistem autentikasi SSO yang terpusat memudahkan user dalam melakukan manajemen password. Penelitian ini menggunakan LDAP sebagai media autentikasi, serta aplikasi web berbasis JSP,PHP, dan ASP.NET yang akan diintegrasikan dengan Centralized Authentication Service (CAS). Penelitian ini berhasil menyatukan autentikasi username dan password dengan menggunakan server LDAP melalui server CAS yang diterapkan pada server web berbasis PHP,JSP dan ASP.NET
Abstract Web is an information and communication media that is quite popular today. Web can be accessed from any device that connect to the network. Web applications are multiplatform and because of that many websites are being developed to meet the needs of each individual. People that use many web aplication are often need to remember more than one credential to login. Because of that a new login system is developed. Single sign on is the name of the new login system. User doesn’t need to login again to access different web application that using this system too. A centralized authentication system that single sign on provides can help user from remembering too many username and password combination for each web application and the time consumed by conventional login process will be reduced. This research use Lightweight Directory Access Protocol (LDAP) as authentication medium, and web application written in ASP.NET, JSP, and PHP that will be integrated to Centralized Authentication System (CAS). This research have successfully integrating authentication mechanism with LDAP and CAS in ASP,JSP, and PHP web aplication. Keywords: LDAP, CAS, SSO,PHP,JSP,ASP.NET
1
Pendahuluan
Web adalah sebuah media informasi dan komunikasi yang cukup populer saat ini. Tak hanya dapat diakses melalui komputer, web dapat diakses melalui berbagai perangkat yang terhubung ke jaringan. Karena web bersifat multi platform cukup banyak aplikasi web yang dikembangkan. Berbagai macam aplikasi web ada untuk memenuhi kebutuhan tiap-tiap individu, mulai dari aplikasi perkantoran seperti Office Web App hingga aplikasi jejaring sosial seperti Facebook. Terkadang suatu aplikasi meminta user untuk memasukan username dan password agar aplikasi tersebut dapat berjalan. Hal ini terkadang merepotkan dan menyita waktu user apabila lupa atau salah menginputkan kombinasi username dan passwordnya. Single sign on merupakan solusi dari permasalahan login diatas, single sign on membuat proses login menjadi tersentralisasi. User tidak lagi direpotkan menghafal username dan
2
Andrea Dika Pradana
password yang banyak. Dengan single sign on user tidak perlu melakukan login kembali saat akan berpindah antar aplikasi. Penelitian sebelumnya telah dilakukan oleh oleh Saputro,Satoto, dan Rochim(2012) dan Rudy, Richie, dan Gunadi(2009). Penelitian kali ini masih menggunakan Centralized Authentication Service(CAS) dan server Lightweight Directory Access Protocol seperti pada penelitian terdahulu. Perbedaan penelitian ini adalah pada penggunaan web dengan tiga bahasa pemrograman yang berbeda, yakni ASP.NET, JSP, dan PHP. Adapun jenis web yang akan digunakan adalah web non-CMS. 2
Tinjauan Pustaka
2.1
Lightweight Directory Access Protocol (LDAP)
LDAP merupakan sebuah protokol yang digunakan untuk melihat maupun memanipulasi suatu objek yang terkandung dalam sebuah direktori. LDAP dirancang untuk aplikasi manajemen dan browser yang menyediakan akses direktori secara interaktif. LDAP dapat digunakan untuk mengakses direktori berbasis X.500 maupun yang proprietary. Suatu direktori akan memiliki item yang akan dijadikan sebagai root. Untuk setiap titik root, secara umum ditunjukkan dengan suatu attribut dc (DomainComponent) atau ou (OrganizationalUnit). Kemudian pada titik daun biasanya akan berisi item dengan attributuid (User ID) atau cn (Common Name). Directory service biasanya menyimpan bentuk struktur tree yang dinamakan Directory Information Tree (DIT). Setiap titik pada DIT diberi suatu alamat, baik secara relatif ataupun absolut. Untuk suatu alamat yang relatif disebut dengan Relative Distinguished Name (RDN) sedangkan alamat yang absolut disebut dengan (Distinguished Name) (Hartono, 2007)
2.2
Single Sign On
Teknologi SingleSign On (SSO) adalah teknologi yang mengizinkan pengguna jaringan agar dapat mengakses sumberdaya dalam jaringan hanya dengan menggunakansatu akun pengguna saja (Hendi, 2010). Teknologi ini sangat diminati dalam jaringan yang sangat besar dan bersifat heterogen (aplikasi-aplikasi yang digunakan oleh komputer berasal dari banyak vendor, dan pengguna dimintai untuk mengisi informasi dirinya ke dalam setiap aplikasi yang berbeda tersebut yang hendak diakses oleh pengguna). Dengan menggunakan SSO, seorang pengguna hanya cukup melakukan proses autentikasi sekali saja untuk mendapatkan izin akses terhadap semua layanan yang terdapat di dalam jaringan 2.3
Central Authentication Service
CAS adalah sebuah solusi untuk permasalahan web single sign on. Proyek CAS pertama kali dikembangkan oleh Shawn Bayern pada tahun 2001 di Universitas Yale, kemudian CAS 2.0 dikembangkan di tahun 2002. CAS terdiri dari sebuah server yang dapat melayani proses autentikasi dari beberapa CAS client. CAS server adalah sebuah server yang akan melayani request authentikasi dari CAS client. CAS client merupakan file atau script yang harus ditambahkan di aplikasi web yang akan diintegrasikan dengan single sign on, jadi setiap aplikasi web yang akan berpartisipasi dengan single sign on, perlu disisipkan CAS client pada konfigurasi aplikasi webnya. Server CAS mendukung beberapa mekanisme autentikasi, diantaranya autentikasi dengan menggunakan LDAP/AD, Kerberos, atau RDBMS. Salah satu kelebihan dari CAS adalah framework single sign on ini mudah untuk diintegrasikan pada aplikasi web yang sudah ada.
Jurnal . ………….. Vol. XX …, No. X, Bulan 20XX, XX-XX
Gambar 1
3
Diagram Alir Autentikasi CAS
Prinsip kerja CAS cukup sederhana, ketika user login, server CAS akan memberikan sebuah tiket (biasanya disimpan dalam cookies), tiket ini nantinya digunakan untuk mengautentikasikan user pada setiap aplikasinya. Jadi pada setiap aplikasi akan dilakukan pengecekan dari ticket yang telah diberikan oleh CAS tersebut. 3
Perancangan
3.1
Topologi Jaringan Berikut ini adalah topologi jaringan yang akan digunakan.
Gambar 2
Topologi Jaringan
4
Andrea Dika Pradana Tabel 1
Keterangan Perangkat Keras Aplikasi
PC
IP
SO
DNS
192.168.1.99/24
Windows Server 2003
Windows DNS
IIS Webserver
192.168.1.26/24
Windows Server 2003
IIS, Microsoft SQL Database, CAS .NET Client
Apache Tomcat
192.168.1.77/24
Ubuntu 10.04
Apache Tomcat, Mysql, Java Runtime Environtment, Java CAS Client
CAS Server
192.168.1.24/24
Ubuntu 10.04
Apache Tomcat, CAS Server, JRE,openLDAP,LSC, phpLdapAdmin, openLDAP, JRE, LDAP Synchronization Connector
Apache
192.168.1.55
Ubuntu 10.04
Apache2, php5,Mysql, phpCAS Client
PC Client
172.16.40.1/24
Windows XP
Firefox web browser
PC Client
172.16.40.2/24
Windows XP
Firefox web browser
Webserver
3.2
Flowchart Login
Ketika user melakukan login, server CAS akan melakukan pengecekan terhadap account user di database LDAP, apabila ada maka autentikasi sukses dan user akan diarahkan ke halaman utama. Apabila user tidak ditemukan maka akan dilakukan proses penambahan user dari LDAP ke database Mulai
B
Halaman Login CAS Cek Username di Database
Input Username dan Password
Tidak Ada
Insert username dan Password ke Database Cek Validasi Data di LDAP
Invalid
Pesan Error
Ada
Halaman Utama
Valid
B Selesai
Gambar 3
Flowchart Login
Jurnal . ………….. Vol. XX …, No. X, Bulan 20XX, XX-XX
3.3
5
Flowchart Tambah User
Ketika user melakukan registrasi, sistem akan mengecek ketersediaan account di LDAP, apabila tersedia maka LDAP akan diupdate bersama dengan database web. Mulai
B
Halaman Registrasi Input Data ke DB
Input Data Input Data ke LDAP
Selesai Cek username di LDAP
Ada
Pesan Error
Tidak Ada
B
Gambar 4
3.4
Flowchart Tambah User
Flowchart Ganti Password
Ketika user mengubah password, maka sistem akan mengupdate password ke database dan kemudian akan dilanjutkan ke LDAP. Start
B
Halaman Ganti Password Update LDAP
Input Password Halaman Ganti Password
Update Password ke DB
Success
B Selesai
Error Pesan Error
Gambar 5
3.5
Flowchart Ganti Password
Aplikasi Web
Adapun aplikasi web yang akan diintegrasikan dengan sistem single sign on ini adalah aplikasi web berbasis PHP, JSP, dan ASP.NET
6
3.6
Andrea Dika Pradana
Struktur Database LDAP Struktur dari database LDAP yang akan digunakan adalah sebagai berikut dc=world
dc=pcr
cn=admin
ou=people
Gambar 6
Struktur LDAP
Adapun data username dan password user akan tersimpan di bawah node ou=people dengan identifier uid Adapun file LDIF yang digunakan untuk membentuk struktur LDAP seperti diatas adalah sebagai berikut. 1
2 3
dn: dc=pcr,dc=world objectClass: top objectClass: dcObject objectclass: organization o: pcr World dc: pcr description: LDAP pcr dn: cn=admin,dc=pcr,dc=world objectClass: simpleSecurityObject objectClass: organizationalRole cn: admin description: LDAP administrator userPassword: secret
4 5
dn: ou=people,dc=pcr,dc=world objectClass: organizationalUnit ou: people Baris pertama digunakan untuk membuat top entry dari LDAP yakni dc=pcr,dc=world. Baris ke dua untuk membuat entry admin seperti gambar perancangan LDAP pada gambar 5. Baris kedua dan keempat kosong karena untuk setiap penulisan entry yang baru perlu diberi jarak antara satu entry dengan entry lainnya.
3.7
CAS Server
Agar CAS server dapat berkomunikasi dengan server LDAP maka perlu ditambahkan baris kode berikut ini pada dokumen deployerConfigContext.xml yang ada pada folder WEB-INF/ 1 2 3
<property name="pooled" value="false"/> <property name="url" value="ldap://localhost" />
Jurnal . ………….. Vol. XX …, No. X, Bulan 20XX, XX-XX
4 5 6 7 8 9 1 0 1 1 1 2 1 3
7
<property name="userDn" value="admin"/> <property name="password" value="your_manager_password"/> <property name="baseEnvironmentProperties"> <map> <entry key="com.sun.jndi.ldap.connect.timeout" value="3000" /> <entry key="com.sun.jndi.ldap.read.timeout" value="3000" /> <entry key="java.naming.security.authentication" value="simple" />
Baris ketiga pada kode diatas menunjukkan bahwa server LDAP juga terinstall di CAS Server. Baris ke 8-9 menunjukkan batas toleransi delay untuk login ke LDAP dan membaca data dari LDAP, adapun satuan waktu yang digunakan adalah milisecond. Kemudian baris ke 10 menunjukkan tipe autentikasi yang digunakan yaitu simple, ini berarti saat melakukan autentikasi, password akan dikirim dalam bentuk plain text. Kemudian, pada bagian properti authenticationHandlers ubah menjadi seperti berikut agar dapat membaca properti uid milik user di LDAP 1 <property name="authenticationHandlers"> 2 <list> 3
4
5 6
Baris keempat pada kode diatas berisikan alamat letak informasi user disimpan di LDAP. Adapun %u pada baris tersebut menunjukkan bahwa nilai uid merupakan nilai yang didapat dari passing username saat proses login melalui CAS server
3.8
CAS Client
Agar aplikasi web dapat berkomunikasi dengan CAS server, maka dibutuhkan file CAS client. Terdapat tiga file CAS client yang resmi dari situs http://www.jasig.org/cas yakni CAS client untuk ASP.NET, JSP, dan PHP. File tersebut harus ditambahkan kedalam aplikasi web masing-masing. Selain itu perlu sedikit konfigurasi agar file CAS client benar-benar terintegrasi ke sistem. 1 2 3
require_once '../phpCAS/CAS.php'; phpCAS::setCasServerCACert(‘/home/hilwanz/root-ca.crt’); phpCAS::handleLogoutRequests(false);
8
4
Andrea Dika Pradana
phpCAS::forceAuthentication();
Kode diatas adalah kode yang harus disisipkan pada aplikasi web berbasis PHP, yaitu pada file login.php. Baris pertama menunjukkan letak file CAS client tersimpan. Baris kedua menunjukkan letak Certificate of Authority tersimpan. Fungsi phpCAS::forceAuthentication() pada baris keempat menunjukkan bahwa aplikasi web ini harus diautentikasi menggunakan CAS server. 4
Pengujian dan Analisa
4.1
Skenario Pengujian
Pengujian implementasi SSO menggunakan CAS pada aplikasi web multiplatform dilaksanakan di laboratorium Politeknik Caltex Riau dengan 5 unit perangkat PC, 1 unit switch dan 1 unit cisco router. Dimana pengujian yang dilakukan antara lain: • • • • • • • 4.2
Melakukan login ke sistem. Mengakses Aplikasi web yang berbeda. Melakukan logout dari sistem. Login dari dua atau tiga PC client yang berbeda dengan satu ID saja. Uji coba implementasi CAS pada virtual direktori. Pengujian dengan menonaktifkan server LDAP. Pengujian dengan menonaktifkan server CAS
Hasil Pengujian a.
Pengujian Login ke Sistem Pengujian dilakukan dengan melakukan login ke dalam aplikasi web. Hasil pengujian login ke sistem adalah sebagai berikut: Tabel 2 Pengujian Login Tabel 3
b.
Aplikasi Web
Login Berhasil
Login Gagal
PHP Server JSP Server ASP Server
√ √ √
x x x
Pengujian dengan Menonaktifkan Server LDAP Pengujian ini dilakukan untuk melihat dampak yang terjadi apabila server LDAP mengalami kerusakan. Tabel 4 Pengujian dengan Menonaktifkan Server LDAP Aplikasi Web PHP JSP ASP
Login Gagal Gagal Gagal
Parameter Pengujian Ganti Password Single Sign On Gagal Gagal Gagal Gagal Gagal Gagal
Register User Gagal Gagal Gagal
Jurnal . ………….. Vol. XX …, No. X, Bulan 20XX, XX-XX
c.
9
Pengujian dengan Menonaktifkan Server CAS Pengujian ini bertujuan untuk melihat dampak yang terjadi apabila server CAS mengalami kerusakan. Tabel 5 Pengujian Menonaktifkan Server CAS Aplikasi Web PHP JSP ASP
5
Kesimpulan dan Saran
5.1
Kesimpulan
Login Gagal Gagal Gagal
Parameter Pengujian Ganti Password Single Sign On Gagal Gagal Gagal Gagal Gagal Gagal
Register User Berhasil Berhasil Berhasil
Kesimpulan yang diperoleh dari proyek akhir ini adalah sebagai berikut: 1. CAS merupakan solusi single sign on yang dapat berjalan pada aplikasi berbasis ASP.NET, JSP, dan PHP 2. Konfigurasi CAS client melekat pada sisi aplikasi bukan webserver 3. Dengan menggunakan CAS Server user hanya perlu menginputkan username dan password sekali saja, ketika user ingin login ke website yang lain cas server akan otomatis mengautentikasi user tersebut 4. CAS dapat berjalan pada aplikasi web yang menggunakan virtual host. 5. CAS server hanya menyediakan layanan single sign on, web developer masih diperlukan untuk membuat proses penggantian password dan registrasi user agar mengarah ke server LDAP. 6. Apabila server LDAP atau CAS tidak aktif, proses login user akan gagal. 7. Apabila server CAS tidak aktif, proses registrasi user masih dapat dilakukan
5.2
Saran Adapun saran untuk pengembangan proyek akhir ini adalah sebagai berikut: 1. Analisa keamanan dari sistem single sign on. 2. Melakukan clustering CAS server, sehingga apabila ada CAS server yang mengalami kegagalan, layanan web tidak mengalami gangguan karena masih mempunyai CAS server cadangan 3. Menggunakan protokol ldaps untuk menambah keamanan koneksi ke database LDAP
6
Daftar Pustaka [1] [2] [3]
Allen, R., Larson, M., Liu, C., “DNS On Windows Server 2003”, O'Reilly, 2003. Arkills, B., “LDAP Directories Explained: An Introduction and Analysis”, Addison Wesley. Boston, MA02116, U.S.A, 2003. Cisco, Introduction to Secure Socket Layer, Cisco, diambil dari http://jmiller.uaa.alaska.edu/cse465-fall2012/papers/cisco2002.pdf, 2002
10
Andrea Dika Pradana
[4] [5]
[6] [7]
[8]
Johner,H., dkk, Understanding LDAP, diambil dari http://courses.cs.vt.edu/cs5204 /fall05-kafura/Papers/Naming/PagesFrom UnderstandingLDAP.pdf, 1998 Rudy,Riechie, dan Gunadi, O., Integrasi Aplikasi Menggunakan Single Sign On Berbasiskan Lightweight Directory Access Protokol (LDAP) Dalam Portal Binus@ccess (Bee-Portal), 2009 Marshall, B., Introduction to LDAP, diambil dari http://quark.humbug.org. au/publications/ldap/ldap_tut_v2.pdf, 2000 Pangestu, H., Implementasi SSO ( SINGLE SIGN ON ) Menggunakan Autentikasi NCSA untuk Website di Web Server, diambil dari http://repository. politekniktelkom.ac.id/Proyek%20Akhir/TK/IMPLEMENTASI%20SSO%20(%20 SINGLE%20SIGN%20ON%20)%20MENGGUNAKAN%20AUTENTIKAS%20N CSA%20UNTUK%20WEBSITE%20DI%20WEB%20SERVER.pdf Tanenbaum, A., “Computer Networks Fourth Edition”, Prentice Hall, 2003