Link Web
|
UNIKOM SINGLE SIGN ON API ( Part 1 ) Review I. Single Sign OnSigle Sign On merupakan fasilitas yang memberikan kemudahan untuk user yang melakukan login ketika mereka surfing di Internet. Dengan fasilitas Single Sign On, user hanya akan diminta untuk melakukan login sekali saja untuk semua fasilitas online yang ada. Hampir semua situs besar dunia telah memanfaatkan fasilitas ini dengan implementasi yang beragam, tapi dengan tujuan yang sama, diantaranya Yahoo!, Google, Microsoft dan sebagainya. Unikom Single Sign On (USSO) bertujuan untuk memudahkan user dalam berinteraksi online dan mengintegrasikan account user ke dalam satu database yang dapat digunakan oleh masing-masing aplikasi online di Unikom. Dengan USSO, pengembang aplikasi berbasis web di Unikom tidak perlu lagi membuat basis data dan coding sistem yang khusus menangani session login. Berikut adalah gambaran implementasi USSO: I.1. Unikom Single Sign On APIUnikom Single Sign On API (USSO-API) merupakan Application Interface atau Library (pustaka) yang akan digunakan oleh pengembang aplikasi online berbasis web di Unikom agar dapat mengintegrasikan aplikasi yang dibuatnya dengan fasilitas USSO. USSO-API di-coding dengan menggunakan bahasa Pemrograman PHP (Hypertext Preprocessor), USSO-API disusun secara class based dengan nama class "ssoclass", dan dapat diimplementasikan secara mudah di dalam script PHP yang sedang di bangun. USSO-API selain memberikan fasilitas single sign on, juga memberikan fasilitas transfer encryption tanpa SSL. I.2. Kebutuhan Dasar Pengembangan Aplikasi menggunakan USSO-APIAgar aplikasi yang sedang dibangun dapat melakukan interaksi dengan server USSO, maka beberapa kebutuhan berikut ini wajib untuk dimiliki:
II. Dasar-dasar USSO-APIssoclass merupakan class yang harus dipanggil setiap kali aplikasi akan mengakses session login. Berikut adalah contoh pemanggilan ssoclass pada script: <?php /* Include file API terlebih dahulu ?> Dengan script di atas, server akan membuatkan object ssoclass dan menyimpannya dalam variabel $sso, Yang kemudian variabel $sso tersebut dapat digunakan untuk melakukan interaksi antara aplikasi dengan USSO. Pada script di atas terdapat perintah include_once, yang bertujuan agar script PHP yang sedang berjalan memanggil file ssoclass.php untuk digunakan sebagai library/API pada script yang sedang berjalan. (Catatan: pemanggilan ssoclass.php tergantung dari letak direktori file ini berada). include_once "library/ssoclass.php"; Ketika initialisasi ssoclass terdapat string "NamaWebsiteContoh" yang akan digunakan oleh USSO-API sebagai nama yang unik dalam penyimpanan session. String yang diisi harus berbeda dengan aplikasi lainnya yang pernah di bangun, tapi harus selalu sama pada aplikasi yang sedang di bangun. Anda dapat menggunakan nama lain pada string ini dengan catatan tidak menggunakan spasi atau karakter khusus. Berikut adalah beberapa contoh initialisasi yang valid:
Dan berikut adalah beberapa contoh initialisasi yang tidak valid:
Catatan: Jangan memanggil session_start() bila Anda melakukan initialisasi ssoclass. ssoclass akan secara otomatis memanggil session_start dengan id yang unik yang telah diatur agar dapat berjalan lancar dengan USSO-API. Anda dapat menggunakan variabel $_SESSION secara langsung setelah initialisasi ssoclass. Initialisasi ssoclass hanya dapat dilakukan sebelum buffer output (perintah-perintah seperti echo, print_r, dsb) dikirimkan, karena ssoclass akan melakukan setcookie, header dan session_start ketika initialisasi ssoclass dilakukan. II.1. Mengetahui Status Login dengan isLogin()Setelah initialisasi ssoclass, aplikasi dapat memanggil berbagai fungsi pada object ssoclass yang telah dibuat, salah satu yang paling sederhana adalah isLogin(). Fungsi ini akan memberikan hasil kembali (return) berupa boolean (true, false), dimana bila session yang berlangsung telah melakukan login, maka hasil return akan berupa nilai true, bila belum melakukan login maka sebaliknya akan berupa nilai false. SINTAX: boolean $ssoobj->isLogin() Fungsi ini adalah fungsi dasar yang akan sering sekali digunakan untuk memastikan user yang sedang berinteraksi dengan aplikasi yang berjalan telah melakukan login atau belum. Berikut adalah contoh script sederhana yang menggunakan fungsi isLogin(): <?php Pada contoh di atas, fungsi isLogin() merupakan child object dari variabel $sso, fungsi ini dapat digunakan pada seleksi kondisi seperti contoh tersebut. II.2. Mengetahui Username dengan getLoginUsername()Username atau Nama User merupakan data yang sangat penting untuk session login, karena username merupakan data unik yang dimiliki oleh satu account dan tidak akan sama dengan account lainnya. SINTAX: string $ssoobj->getLoginUsername(); Catatan: Fungsi ini hanya akan memberikan return username bila session yang berjalan sudah melakukan login, bila belum melakukan login fungsi ini akan memberikan nilai false dan menset ssoMessage (1) : User belum melakukan login. Berikut adalah contoh penggunaan fungsi getLoginUsername(): if ($sso->isLogin()){ II.3. Mengetahui Nama Tampilan dengan getLoginDisplayName()Username digunakan sebagai id pada database yang akan digunakan sebagai salah satu data untuk melakukan login, sedangkan nama tampilan digunakan untuk identitas yang lebih mudah dibaca oleh user tanpa ada batasan cara penulisan. SINTAX: string $ssoobj->getLoginDisplayName(); Catatan: Fungsi ini hanya akan memberikan return username bila session yang berjalan sudah melakukan login, bila belum melakukan login fungsi ini akan memberikan nilai false dan menset ssoMessage (1) : User belum melakukan login. Berikut adalah contoh penggunaan fungsi getLoginDisplayName(): if ($sso->isLogin()){ II.4. Mengetahui Nomor Identitas user dengan getLoginID()USSO menggunakan konsep multi-type-users, sehingga diperlukan satu kunci ID untuk mengakses data lengkap dari suatu account. Sampai saat ini terdapat 4 jenis account utama pada USSO, yaitu Mahasiswa, Dosen, Karyawan dan Alumni. getLoginID() akan menghasilkan nomor identitas dari account yang sedang melakukan login. Berikut adalah tabel nomor identitas berdasarkan tipe account:
Data hasil getLoginID() dapat digunakan pada database pangkalan untuk mendapatkan data lengkap account yang dimaksud, atau dapat juga menggunakan fungsi yang ada di USSO-API, yaitu getUserDetailData() dan getCurrentUserDetailData().
SINTAX: string $ssoobj->getLoginID(); Catatan: Fungsi ini hanya akan memberikan return username bila session yang berjalan sudah melakukan login, bila belum melakukan login fungsi ini akan memberikan nilai false dan menset ssoMessage(1) : User belum melakukan login. Berikut adalah contoh penggunaan fungsi getLoginID(): if ($sso->isLogin()){
III. Login InterfaceUSSO-API Memberikan keleluasaan kepada para developer untuk menampilkan interface login, baik itu dengan membuat form secara manual dengan design yang diatur sendiri pada aplikasi atau secara global dengan menggunakan form default yang berada di login.unikom.ac.id. Berikut adalah gambaran login interface dengan menggunakan interface default juga interface sendiri / manual Interface Default Interface Sendiri / Manual III.1. Mengambil URL Halaman login dengan getLoginPageURL()Bila Anda hendak membuat aplikasi web tanpa ingin membuat kembali tampilan/interface login, Anda dapat menggunakan fungsi berikut. SINTAX: string_url $ssoobj->getLoginPageURL($redirect_to, $loginTitle); Return Value: String URL yang dapat digunakan pada link, url ini merupakan alamat form login pada login.unikom.ac.id. $redirect_to = Alamat web yang akan dituju setelah user melakukan login. Argumen ini harus di isi dengan URL Absolute/Lengkap dengan awalan http://. $loginTitle = Merupakan judul yang akan ditampilkan pada halaman login yang dimaksud. Catatan: Fungsi ini hanya dapat dipanggil bila user belum melakukan login, bila telah melakukan login, fungsi ini akan memberikan return false, dan menset ssoMessage(1) : User telah melakukan login. Berikut adalah contoh penggunaan fungsi getLoginPageURL(): if ($sso->isLogin()){ Atau bila Anda ingin langsung mengarahkan user ke halaman login tanpa harus mengklik link terlebih dahulu, dapat menggunakan contoh berikut: if ($sso->isLogin()){ III.2. Membuat Form Secara ManualBila Anda hendak membuat aplikasi web beserta form login dengan design interface sendiri, Anda dapat menggunakan printFormLogin(), getFormLogin() dan printCloseForm(),closeForm().
III.2.A. printFormLogin() dan getFormLogin()Fungsi ini digunakan sebagai form pembuka sebelum Anda membuat interface login lainnya. Syarat yang harus dimiliki pada form login adalah:
SINTAX getFormLogin: string_XHTML $ssoobj->getFormLogin($redirect_to); Return Value: String berupa XHTML yang berisi tab <form> dengan fasilitas enkripsi transfer data. $redirect_to = Alamat web yang akan dituju setelah user melakukan login. Argumen ini harus di isi dengan URL Absolute/Lengkap dengan awalan http://. SINTAX printFormLogin: [OUTPUT XHTML] $ssoobj->printFormLogin($redirect_to); Return Value: Tidak Ada Output Buffer: Fungsi ini akan langsung menampilkan string_XHTML yang sama dengan hasil getFormLogin(). Memanggil printFormLogin() sama dengan melakukan perintah echo $sso->getFormLogin(). $redirect_to = Alamat web yang akan dituju setelah user melakukan login. Argumen ini harus di isi dengan URL Absolute/Lengkap dengan awalan http://. III.2.B. printCloseForm() dan closeForm()Kedua fungsi ini akan menghasilkan string_XML yang sama dan statis, yaitu "</form>", bedanya closeForm() akan menghasilkan return value, sedangkan printCloseForm() akan menampilkannya langsung pada output buffer.
III.2.C. Contoh Pembuatan Form Login secara ManualBerikut adalah hal-hal yang harus dimiliki oleh form login dalam tahapan:
Berikut adalah contoh script form login secara manual: <?php
|