Ismail Hamzah

"in harmonia progressio"
See also: Other Geeks@INDC

March 2009 - Posts

Implementing Single Sign On Using Cookies

Teknik Single Sign On akan memungkinkan user untuk hanya melakukan satu kali login/logout saja. Misalkan Anda mengoperasikan tiga buah portal yang masing2 memiliki fungsionalitas, tujuan dan teknologi yang berbeda-beda, maka Anda dapat menyediakan kemudahan kepada user dengan cara membiarkan user untuk hanya melakukan satu kali login saja untuk dapat menggunakan ketiga buah portal tadi. Login pada portal A, dan kemudian otomatis ter-login juga pada portal B dan portal C. Contoh yang paling dekat adalah single sign on antara portal geeks dan WSS-Id yang telah dijelaskan oleh welly di blognya.

Seperti yang telah umum dilakukan, cookies digunakan untuk memelihara informasi seorang user, sesaat setelah dia berhasil di authentikasi. Dengan bermodalkan premis diatas, maka dapat dikatakan bahwa Single Sign On dapat diimplementasi dengan menggunakan cookie dengan cara membuat sebuah cookie yang dikenali dan dapat diakses oleh portal-portal lainnya. Dibawah adalah contoh gambaran implementasi Single Sign On:

AP adalah kependekan dari authentication provider. AP dapat berupa sebuah server yang akan melakukan proses authentikasi yang mana hasil dari authentikasi dapat dikirimkan via HTTP Response. Sedangkan informasi2 credentials yang hendak di authentikasi dapat dikirimkan via HTTP Request. Informasi yang dikirim via HTTP Response dapat digunakan untuk membuat sebuah cookie yang direncanakan untuk dapat diakses dan dikenali oleh portal2 lainnya.

Proses Login

Secara sederhana, proses login dapat diisi oleh code yang melakukan HTTP Request pada authentication provider. Informasi credentials dapat dikirimkan via HTTP Request tersebut. Authentication provider kemudian dapat diatur untuk dapat mengirimkan informasi2 tertentu via HTTP Response yang mana informasi2 tersebut dapat digunakan untuk membuat cookie. HTTP Request dapat dilakukan dengan menggunakan System.Net.HttpWebRequest (Tolong bedakan dengan System.Web.HttpWebRequest). System.Net.HttpWebRequest digunakan karena dalam skenario SSO ini, portal adalah merupakan sebuah client yang hendak mengakses AP.

private void SSOLogin()

{

//data request

string postData = "id=id&pwd=password";

System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();

byte[] data = encoding.GetBytes(postData);

//make a request

string ap_url = "http://josso.batujajar.co.id/josso.do";

System.Net.HttpWebRequest req = System.Net.WebRequest.Create(ap_url);

req.Method =
"POST";req.ContentType = "application/x-www-form-urlencoded";

req.ContentLength = data.Length;

//send the request

System.IO.Stream reqStream = req.GetRequestStream();

reqStream.Write(data, 0, data.Length);

reqStream.Close();

//catch the response

System.Net.HttpWebResponse resp = (System.Net.HttpWebResponse)req.GetResponse();

System.IO.
StreamReader sr = new System.IO.StreamReader(resp.GetResponseStream());string results = sr.ReadToEnd();

sr.Close();

//create cookie

HttpCookie cookie = new HttpCookie("xyz");

cookie.Domain = ".batujajar.co.id";

cookie.Path = "/";cookie.Name = "xyz";

cookie.Value = GetTicketID(results);

cookie.Expires = System.
DateTime.Now.AddDays(+1);

Response.Cookies.Add(cookie);

}

private string GetTicketID(string str)

{

//get the ticket id

}

kode diatas akan melakukan HTTP Request pada authentication provider (yang kebetulan di develop dengan menggunakan java sehingga berakhiran .do). HTTP Response kemudian digunakan untuk membuat cookie. Agar cookie dikenali dan dapat diakses oleh domain tertentu saja, maka property Domain dari cookie diisi.

Proses Logout

Peristiwa yang terjadi pada proses logout adalah dengan cara menghancurkan cookie sehingga semua portal tidak dapat menemukan cookie dan kemudian portal akan logout. Cookie dihancurkan dengan cara meng-ekspire-kan cookie tersebut.

private void SSOLogout()

{

//...

cookie.Expires = System.DateTime.Now.AddDays(-1);

//...

}

Share this post: | | | |
Posted: Mar 13 2009, 09:34 AM by go2ismail | with 7 comment(s)
Filed under:
How to Add a New Website in IIS 5

Menambahkan sebuah website baru via IIS 6 adalah mudah, tinggal klik sini dan klik sana maka semua beres. Namun berbeda kasusnya di IIS 5 karena IIS 5 tidak memiliki semua kemewahan yang dimiliki IIS 6 tersebut. yang termudah bisa dilakukan di IIS 5 adalah menambahkan virtual directory. Namun, jika virtual directory bukan merupakan tujuan yang hendak dicapai maka menambahkan sebuah website baru di IIS 5 ternyata dimungkinkan.

Beruntung saya menemukan blognya Mukul Agarwal dalam usaha peng-googlingan saya. Dalam blog tersebut dipaparkan bagaimana caranya untuk menambahkan sebuah website baru pada IIS 5. Ide yang digunakan adalah membuat sebuah website baru dengan menggunakan utilitas adsutil.vbs lalu kemudian menerapkan setingan2 "default website" terhadap si website baru tersebut dengan cara meng-copy "default website" dan mem-paste-kannya ke website baru. Website dikenali melalui service W3SVC. Identitas si website ditunjukan oleh angka yang mengiringi service W3SVC, sehingga sebagai contoh "default website" dapat dicirikan dengan W3SVC/1. angka satu muncul karena, "default website" adalah website kesatu yang ada di IIS. Untuk mencirikan website baru, bisa digunakan angka 2 (atau angka lainnya) sehingga dicirikan dengan W3SVC/2.

berikut adalah langkah-langkah yang dipaparkan di blognya Mukul Agarwal untuk menambahkan sebuah website baru di IIS 5:

1. buka IIS manager dan kemudian "stop" default website.

2. buka command prompt (cmd) dan masuk ke folder "c:\inetpub\adminscripts"

3. untuk melihat semua website yang telah ada di IIS, ketikan "adsutil.vbs enum w3svc/p" di cmd.

4. untuk membuat website baru di IIS, ketikan "adsutil.vbs create w3svc/2" di cmd. note: angka yang digunakan tidak harus angka 2, angka tersebut adalah index yang akan mencirikan website baru yang hendak dibuat.

5. copy-kan struktur dan setingan "default website" pada website baru dengan cara mengetikan "adsutil.vbs copy W3SVC/1 W3SVC/2" di cmd.

6. dengan menggunakan IIS manager, rename website yang baru terbuat dengan nama apapun yang diinginkan dan kemudian tembakan "Home Directory"  ke folder yang digunakan untuk menampung file website.

 

Share this post: | | | |
Posted: Mar 12 2009, 03:24 PM by go2ismail | with 1 comment(s)
Filed under: