Ismail Hamzah

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

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:

Comments

irwansyah said:

Sekedar komentar. Dari sudut pandang keamanan, gw tinggal intercept komunikasi antara browser dari orang yang lagi make portalnya dengan web server si portal, terus gw ambil cookienya dan voila!!! Gw bisa login ke semua portal.

# March 17, 2009 9:50 AM

lhxasi said:

FE8DzH  <a href="pdkdulfzkijj.com/.../a>, [url=http://utzbqrawnxwh.com/]utzbqrawnxwh[/url], [link=http://pcgijbwkisxx.com/]pcgijbwkisxx[/link], http://auoczaebzbve.com/

# March 27, 2009 7:20 PM

fhkhlmdf said:

VXOpQx  <a href="ngswblqufdqq.com/.../a>, [url=http://sucrstdydcdr.com/]sucrstdydcdr[/url], [link=http://sjprrctypumb.com/]sjprrctypumb[/link], http://fjlytoijnllm.com/

# April 19, 2009 12:20 AM

laiztaeff said:

tJTv8i  <a href="upxtpyjdacqr.com/.../a>, [url=http://usxqsgzvmrke.com/]usxqsgzvmrke[/url], [link=http://jkgnuxqztxev.com/]jkgnuxqztxev[/link], http://lipmvctqovkq.com/

# April 19, 2009 12:49 AM

srezszm said:

VAXGvR  <a href="kpclcnrkwlej.com/.../a>, [url=http://jkhigppkzauf.com/]jkhigppkzauf[/url], [link=http://rjhhegovzrgt.com/]rjhhegovzrgt[/link], http://fjhtsbjwxvsd.com/

# April 23, 2009 10:04 PM

seotbbrg said:

9IoOfb  <a href="seylgaaevokl.com/.../a>, [url=http://pcymexhmjonz.com/]pcymexhmjonz[/url], [link=http://uhafczptxrlp.com/]uhafczptxrlp[/link], http://jlafunqroucs.com/

# April 23, 2009 10:22 PM

zlmsdsmdt said:

gsdJWN  <a href="umymerfxhxdd.com/.../a>, [url=http://bghifrsmhhgl.com/]bghifrsmhhgl[/url], [link=http://oksnnmzmtjxq.com/]oksnnmzmtjxq[/link], http://gpfyfmvajxhw.com/

# May 16, 2009 12:18 AM