Rancang Bangun Single Sign On (SSO) Pada Multi Database
Pada kesempatan yang lalu saya sempat membuat rancang bangun SSO. Uji literatur cukup lama saya lakukan dan akhirnya mendapatkan konsep yang sederhana untuk bisa menerapkan SSO pada beberapa database yang saya miliki. Untuk memulainya perlu untuk memahami konsep sederhana tentang SSO. Semoga mudah dipahami ya, temens.
Single
Sign On (SSO) merupakan suatu
konsep mengenai sistem autentikasi yang memudahkan pengguna dalam mengakses
banyak layanan namun hanya dengan satu kali login saja. Sedangkan kebalikannya,
Single Log Out (SLO) merupakan suatu
sistem yang digunakan pengguna untuk keluar dari layanan dengan hanya satu kali
logout saja. Tehnologi ini sangat dinikmati, khususnya dalam jaringan sistem
yang besar dan bersifat heterogen (di saat sistem operasi serta aplikasi yang
digunakan oleh komputer adalah berasal dari banyak vendor, dan pengguna
dimintai untuk mengisi informasi dirinya ke dalam setiap platform yang berbeda
tersebut yang hendak diakses oleh pengguna). Proses otentifikasi yang banyak
pada beberapa aplikasi dapat dihindari dengan mengintegrasikan sebuah Central Authentication Service(CAS) agar
aplikasi berbasis web yang telah ada dapat di SSO-kan, sehingga semua proses
otentikasi akan ditangani oleh CAS dan proses otentikasi dapat disederhanakan.
CAS harus dapat memberikan otentikasi yang kuat, salah satu metode yang dapat dilakukan
adalah dengan mengunakan Lightweight
Directory Access Protocol(LDAP) sebagai datastore
dan Remote Accses Dial In Pengguna
(RADIUS) sebagai backend dari CAS
guna menghasilkan sebuah sistem SSO. Dengan memusatkan data pengguna pada LDAP
dan membebankan proses otentikasi pada RADIUS dan mengintegrasikan keduanya ke
dalam CAS telah berhasil membentuk sebuah sistem SSO yang cukup stabil dan
dapat diandalkan.
Fungsi LDAP
Fungsi LDAP yaitu untuk merapihkan serta membuat database menjadi terpusat. Dengan adanya jaringan yang terpusat, memungkinkan pengguna untuk berpindah tempat tanpa harus membawa-bawa PC nya.
Kelebihan LDAP
- Proses otentifikasi dilakukan dengan sederhana
- Terdapat mekanisme yang menjamin kerahasiaan dan integritas data.
Kekurangan LDAP
- Terdapat kemungkinan client mengakses server
- Terdapat mekanisme yang menjamin kerahasiaan dan integritas data.
Langkah selanjutnya kita perlu untuk mengidentifikasi minimal dua database yang akan dilibatkan ke dalam pembuatan SSO.
Arsitektur
SSO Dengan LDAP
LDAP (Light Weight Directory Access Protocol) adalah sebuah
protokol yang mengatur mekanisme pengaksesan layanan direktori (directory
service), yang dapat digunakan untuk mendeskripsikan banyak informasi seperti
informasi tentang data pengguna aplikasi, atau sumber daya pada suatu jaringan
seperti printer dan scanner.
Arsitektur Sistem yang akan dibangun dengan berbasis Single Sign On akan
dibagi menjadi dua bagian, yaitu flowchart proses login aplikasi SSO dan
flowchart proses logout aplikasi SSO.
Gambar 1. Flowchart Proses Login Aplikasi SSO
Gambar 2. Flowchart Proses Logout Aplikasi SSO
Konsep Kerja LDAP
Adapun penjelasannya adalah sebagai berikut :
- Otentifikasi
a. Otentisasi Username dan Password
· Pertama-tama,
Pengguna X masuk ke portal AppSatker atau E-Kinerja dengan alamat yang sudah
ditentukan. Sistem secara otomatis akan melakukan redirect Pengguna X ke portal
SSO untuk melakukan login terlebih dahulu.
· Pengguna X
memasukkan Username dan password miliknya ke halaman portal SSO tersebut.
b. Membuat dan Menerima Identitas Tiket
Portal SSO kemudian akan melakukan pengecekan ke LDAP
terkait Pengguna dan password Pengguna tersebut. Jika LDAP mengembalikan hasil
pengecekan ‘OK’, maka kemudian Pengguna X akan mendapatkan tiket untuk masuk ke
dalam sistem tersebut. Karena sebelumnya Pengguna X akan masuk ke portal
AppSatker atau E-Kinerja, maka sistem selanjutnya melakukan redirect ke portal
AppSatker atau E-Kinerja setelah otentikasi di Portal SSO tersebut. Pada tiket
tersebut tersimpan beberapa informasi meliputi: portal apa yang dituju, id
Pengguna tersebut, dan hak akses ke portal lainnya.
- Otorisasi
a. Otorisasi Grup
Setelah di-redirect masuk ke portal AppSatker atau
E-Kinerja, portal ini kemudian melakukan pengecekan kembali terhadap Pengguna
X. Pengecekan dilakukan untuk melihat Pengguna X masuk ke dalam grup Pengguna
apa. Misal Pengguna X termasuk dalam grup administrator. Maka portal inventori
kemudian menampilkan menu-menu dan aksi (view, add, edit, delete) yang telah
terdefinisi untuk grup administrator di portal inventori tersebut.
b. Perijinan Grup
·
Selanjutnya
Pengguna X dapat melakukan aksi pada portal AppSatker atau E-Kinerja tersebut
sesuai hak aksesnya. Perlakuan masing-masing terhadap Pengguna X adalah sama,
setiap masuk Pengguna X akan dicek masuk ke grup apa dalam portal tersebut.
·
Jika telah
selesai menggunakan suatu portal, maka Pengguna X keluar (logout) dari sistem.
Sistem selanjutnya akan menghapus session dan tiket untuk Pengguna X. Sehingga
jika ingin masuk kembali, Pengguna X harus melakukan autentikasi ulang.
Pelaksanaan
Kegiatan Instalasi Dan Konfigurasi LDAP
LDAP adalah suatu bentuk protokol client-server yang
digunakan untuk mengakses suatu directory service. Pada tahap awalnya, LDAP
digunakan sebagai suatu front-end bagi X.500, tetapi juga dapat digunakan
bersama directory server yang stand-alone dan juga yang lainnya. LDAP
memungkinkan kita untuk mengembangkan kemampuan kita yang dapat digunakan untuk
mencari suatu organisasi, mencari suatu individu dan juga mencari sumber daya
yang lainnya misalnya file maupun alat/device didalam suatu jaringan/network.
Informasi
pada LDAP disimpan dalam entry. Layaknya entry pada basis data umunya, setiap
entry memiliki beberapa atribut. Setiap atribut dapat memiliki satu atau lebih
nilai. Namun, jika pada basis data kita memiliki primary key untuk membedakan
suatu entry dengan entry lainnya, dalam LDAP kita memiliki Distinguished Name
(DN) yang bernilai unik untuk tiap entry. DN didapat dengan mengurutkan lokasi
entry hingga akar hirarki.
Gambar 3. Hirarki Database Directory Service Pada SSO
Secara prinsip struktur database pada directory service adalah
hierarchy seperti yang ditunjukkan pada gambar di atas. Seperti pada struktur
hirarki pada umumnya, pada suatu database directory service akan memiliki suatu
item yang dijadikan sebagai root. Untuk sebuah titik root, secara umum
ditunjukkan dengan suatu atribut dc (Domain Component), namun dapat juga
langsung ditunjuk dengan atribut cn (Common Name) atau ou (Organization Unit).
Kemudian pada titik daun (leaf) biasanya akan berisi suatu item denga atribut
uid (User ID) ataupun cn.
Di dalam LDAP terdapat 2 service utama yaitu : slapd dan
slurp. Slapd merupakan LDAP daemon yang melayani request atau permintaan dari
client, query dan berkomunikasi dengan backend database. Sedangkan slurp
merupakan replication daemon yang berfungsi melayani replikasi data agar terus
terjadi sinkronisasi data antara client dan server.
Untuk
membangun sebuah server LDAP, ada 3 hal yang perlu diketahui. Yaitu : Schema,
Object Class dan Attribute. Schema adalah seperangkat aturan yang
mendeskripsikan jenis data apa saja yang akan disimpan, schema akan membantu
untuk menjaga konsistensi dan kualitas data sehingga dapat mengurangi
terjadinya duplikasi data. Object Class adalah sekumpulan masukan yang memberi
informasi jenis group dan membutuhkan atribut yang biasanya terdiri atas
attribute names, attribute type, dan attribute syntax yang semuanya terkumpul
dalam suatu data yang valid pada setiap kelasnya. Attribute adalah masukan yang
sifatnya unik seperti uid, cn, sn, dan lain sebagainya. Attribute sendiri dapat
menggunakan single value maupun multiple value.
Kebutuhan Pembangunan SSO
Melihat dari banyaknya
kesamaan dalam infrastruktur sistem dari pada kedua aplikasi maka dapat
dibangun SSO dengan lebih mudah. SSO akan dibangun pada halaman
web dengan kebutuhan sebagai
berikut :
- Aplikasi VMWare xSphere
· ISO Ubuntu Server 16.04(64 bit)
· 2x VM Ubuntu Server (untuk Keycloak dan LDAP)
· 1x Perangkat Mikrotik (untuk bridging network)/Alternatif : gunakan host-only network.
· Aplikasi KeyCloak
· OpenJDK & OpenJRE
· OpenLDAP & phpLDAPAdmin
· Database1 + plugin SAML 2.0 Single Sign On
· Database2 + Plugin SAML 2.0 Single Sign On
Instalasi dan Konfigurasi LDAP Server SSO di Ubuntu
Implementasi SSO pada
Sistem dibagi menjadi beberapa tahap, yaitu :
1. Instalasi paket-paket LAMP yang dibutuhkan
2. Instalasi LDAP Server
3. Menyeting hirarki pada sistem PHPLDAPAdmin
4. Instalasi
SSO pada LDAP Server
Pada tulisan kali ini, akan dibagi menjadi dua karena step yang cukup panjang pada langkah 1 dan 2. Pada tulisan berikutnya akan dibahas langkah 3 dan 4. Selamat mencoba.
Langkah 1 : Instalasi paket-paket LAMP yang dibutuhkan
· Web Server
(menggunakan Apache Web Server)
#apt-get
install apache2
Ketik 'Y' untuk
meneruskan. Tunggu beberapa saat hinggu kursor muncul kembali.
#sudo
apt-get install php7.0-cli
Ketik 'Y' untuk
meneruskan. Tunggu beberapa saat hinggu kursor muncul kembali.
Mengetes Apache sudah
aktif dengan mengetik '\\localhost' pada web browser.
· Php5
Untuk mengetahui versi php yang tersedia pada root,
cek dengan perintah berikut :
#php -v
·
Database Server
# sudo apt-get
install mysql-server
Ketik 'Y' untuk
meneruskan. Tunggu beberapa saat hinggu kursor muncul kembali.
Tulis password yang diinginkan, misalnya
'SSOok'. Tekan tombol Enter untuk meneruskan.
Tulis kembali password yang diinginkan, misalnya
'SSOok'. Tekan tombol Enter untuk meneruskan. Tunggu
beberapa saat hinggu kursor muncul kembali.
#
sudo apt-get install mysql-client
·
Plugin untuk
MySql
#sudo
apt-get install php7.0-mysql
·
Untuk
mengamankan database MySQL yang sudah terinstall
#mysql_secure_installation
Tulis 'N' dan menunggu proses dilanjutkan.
Tulis 'Y' dan menunggu proses dilanjutkan.
Tulis 'Y' dan menunggu proses dilanjutkan.
Tulis 'Y' dan menunggu proses dilanjutkan.
Tulis 'Y'
dan menunggu proses ditampilkan tulisan
'Success
All done!'
· Front End atau web
base untuk Database Server (menggunakan phpmyadmin)
# sudo apt-get
install phpmyadmin
Ketik 'Y' untuk
meneruskan. Tunggu beberapa saat hinggu kursor muncul kembali.
Tekan tombol enter pada
pilihan 'Apache2'.
Tekan tombol enter pada
pilihan 'Yes'.
Tulis password database server yang diinginkan,
misalnya 'SSOMySQL'. Tekan tombol Enter untuk meneruskan.
Tulis kembali password yang diinginkan, misalnya
'SSOMySQL'. Tekan tombol Enter untuk meneruskan. Tunggu
beberapa saat hinggu kursor muncul kembali.
·
Untuk
meningkatkan kecepatan PHP lakukan perintah ini:
# apt-get -y
install php7.0-opcache php-apcu
·
Mengaktifkan
website SSL di Apache
# a2enmod ssl
# a2ensite default-ssl
#
systemctl restart apache2
· Mengamankan
website dengan Let's Encrypt SSL Certificate dengan menginstall
phyton-letsencript-apache
#
apt-get -y install python-letsencrypt-apache
·
Akses Root ke
PHPMyAdmin dengan MariaDB
# mysql -u root -p
Masukkan password MySQL yang dudah terinstall : SSOok
Langkah 2 : Instalasi LDAP
Server
·
Edit hostname
VM
# gedit /etc/hostname
Ubah
nama server dari : [PCname]-virtual-machine
menjadi
: server.ldap.org
simpan
file dan keluar
# reboot
·
Instalasi LDAP
# apt-get install slapd
ldap-utils
Tulis 'Y' dan menunggu proses dilanjutkan.
Tulis password Root : 'myrootpassword'. Tekan tombol Enter
untuk meneruskan.
·
Mengubah
konfigurasi LDAP
# gedit /etc/ldap/ldap.conf
Ubah
isi file konfigurasi berikut ini :
Menjadi seperti ini :
dengan perubahan pada :
BASE dc=ldap,dc=com
URI ldap://localhost:389
·
Mengkonfigurasi
ulang konfigurasi SLAPD
# dpkg-recongure slapd
Pilih 'No' dan menunggu proses dilanjutkan.
Gunakan nama domain default yang sudah
ditentukan. Tekan tombol Tab untuk mengarahkan kursor ke Tombol 'OK'. Tekan
tombol 'OK' dan menunggu proses dilanjutkan.
Tulis password Root : 'myrootpassword'. Tekan tombol Enter
untuk meneruskan.
Pilihkah default 'HDB'
dengan cara mengarahkan kursor atas ke pilihan 'HDB'. Tekan tombol Enter untuk
meneruskan.
Pilih 'No' dan menunggu proses dilanjutkan.
Pilih 'Yes' dan menunggu proses dilanjutkan.
Pilih 'No' dan menunggu proses dilanjutkan. Tunggu
beberapa saat hinggu kursor muncul kembali.
·
Mengetes server
LDAP
# ldapsearch -x
·
Menginstall
LDAP Server Administration
# apt-get install phpldapadmin
Tulis 'Y' dan menunggu proses dilanjutkan. Tunggu
beberapa saat hinggu kursor muncul kembali. Sebelum meneruskan proses
selanjutnya perlu untuk mempersiapkan IP address untuk konfigurasi selanjutnya.
Untuk itu, IP dapat dilihat dengan perintah ifconfig.
# ifconfig
Buka file konfigurasi pada /etc/phpldapadmin/config.php
Perubahan
pada baris 161
Perubahan pada baris 285,
292, dan 299.
Perubahan pada baris 325.
Klik tombol 'Save' dan
keluar. Restart service apache2.
# systemctl restart apache2
Note
: usahakan untuk terus login dengan Root
Menyeting hirarki pada sistem PHPLDAPAdmin dengan membuka web browser dan uji phpldapadmin di IP http://192.192.1.1/phpldapadmin.
Lakukan login pada
PHPLDAPAdmin dan tulis password Root.
Klik tombol 'Authenticate' dan tunggu hingga muncul menu utama.
Klik pohon hirarki 'dc=ldap,
dc=com' dan pilih 'Create new entry here' pada sebelah kanan menu. Pilih radio
button 'Generic : Organisational Unit'.
Tulis nama unit
organisasi : 'database1' dan klik tombol 'Create Object'.
Klik tombol 'Commit'.
Klik pilihan 'Create a
child entry'.
Pilih pilihan 'Generic :
Posix Group'.
Tulis nama grup :
'database1-group' dan klik tombol 'Create Object'.
Klik tombol 'Commit'.
Hasil dari proses ini
dapat dilihat dari bertambahnya cabang pada unit organisasi database1,yaitu
bertambah dg adanya group 'database1-group'. Selanjutnya menambahkan user group
dengan cara klik pilihan 'Create a child entry'.
Pilih pilihan 'Generic :
User Account'.
Buat akun user dari group :
database1-group
Common name : (lewati saja krn akan terbentuk sendiri)
First name : Dum
GID Number : database1-group
Home directory : /home/users/mr.dummy
Last name : My
Login shell : bin/sh
Password : (misal) thePassw0rd
(confirm pwd) thePassw0rd
Klik
tombol 'Create Object'
Klik tombol 'Commit'.
Hasil :































































No comments:
Post a Comment