Single SignOn yang dimaksud disini adalah jika kita memiliki lebih dari satu website, dengan masing-masing website itu membutuhkan login untuk mengaksesnya, dan menginginkan setiap user yang memiliki akses ke masing-masing website itu cukup login sekali saja. Jadi user website tersebut tidak perlu harus login di setiap website ini. Contoh yang ada seperti di kompasiana.com ini. Jika kita login di kompasiana.com terus masuk ke epaper.kompas.com kita tidak perlu login lagi di sana.
Penulis membangun sebuah web komunitas, untuk mudahnya kita sebut saja dengan http://www.example.com. Fasilitas-fasilitas spesifik yang ada di web tersebut baru bisa diakses jika pengguna melakukan login ke situs tersebut. Tanpa melakukan login, pengguna hanya bisa menggunakan fasilitas-fasilitas standar. Web site tersebut disetting bisa diakses juga dengan hanya mengunjungi alamat http://example.com.
Dilain waktu, penulis mengembangkan versi minimalis dari website tersebut, dengan harapan bisa diakses oleh pengguna dengan menggunakan perangkat mobile. Alamat yang disediakan adalah  http://m.example.com. Dengan demikian untuk mengakses website ini bisa dilakukan dengan mengunjungi salah satu dari tiga alamat berikut:
Masing-masing alamat tersebut di konfigurasi  bisa dikunjungi dengan menggunakan komputer.
Pengguna bisa melakukan login dengan form login yang disediakan di masing-masing alamat tersebut. Masukan yang dibutuhkan adalah user id dan password. Dari User id dan password yang dimasukkan oleh pengguna, Sistem akan mencocokkannya dengan tabel user dan password yang ada di server database (rutin yang digunakan adalah dengan bahasa pemrograman PHP (php.net)). Jika cocok maka data User_id disimpan ke dalam Variabel session, dan juga dibuat variabel session lain yang menyatakan bahwa user tersebut berhasil melakukan proses login. Rutin simple sederhananya mungkin bisa seperti ini:
.....
if (isset($_SESSION['M_LOGIN'])) {
$MM_redirectLoginSuccess = "loginsuccess.php";
header("Location: " . $MM_redirectLoginSuccess );
}
$query = sprintf("select * from user_table where user_id='%s' and password=md5('%s')",mysql_real_escape_string($_POST['user_id']),
mysql_real_escape_string($_POST['password']));
$result = mysql_query($query);if ($result) {
if ((mysql_num_rows($result)==1) && ($row=mysql_fetch_object($result)) {
$_SESSION['M_USER_ID'] = $row->user_id;
$_SESSION['M_LOGIN'] = 1;
$MM_redirectLoginSuccess = "loginsuccess.php";
header("Location: " . $MM_redirectLoginSuccess );
}
}
...?>
Pada saat mengunjungi alamat http://example.com, dan melakukan login, berhasil masuk dan mendapatkan fasilitas yang disediakan, akan tetapi begitu mengunjungi alamat http://www.example.com di tab yang berbeda (dalam hal ini tab browser yang lama belum di logout) ternyata halaman http://www.example.com menampilkan form login lagi, tidak menganggap kalau kita sudah login. Begitu juga ketika membuka tab browser baru lagi, dan mengunjungi http://m.example.com ternyata sama juga, tidak dianggap telah login.
Setelah mencari informasi di internet via google, ternyata ada konfigurasi yang bisa membuat variabel session yang telah dibuat sewaktu mengakses http://example.com juga tetap bisa diakses lewat http://www.example.com maupun lewat http://m.example.com. Konfigurasi tersebut adalah dengan melakukan pengisian untuk variabel php session.cookie_domain, session.name, dan jika kita menggunakan suhosin di situs kita perlu ditambahkan juga setting untuk suhosin.session.cryptdocroot.
Konfigurasi yang penulis lakukan adalah lewat php.ini dengan isian sebagai berikut:
session.cookie_domain=.example.comsession.name=example
suhosin.session.cryptdocroot = Off
Setelah konfigurasi di atas dipasang, akhirnya bisa dilakukan login di http://example.com dan sewaktu membuka tab baru di http://www.example.com ataupun di http://m.example.com posisi juga sudah terauthorisasi yang berarti tidak perlu harus login lagi.
Baca konten-konten menarik Kompasiana langsung dari smartphone kamu. Follow channel WhatsApp Kompasiana sekarang di sini: https://whatsapp.com/channel/0029VaYjYaL4Spk7WflFYJ2H