SDU
Personal tools

Single Sign-on with Cookies

From SDU

Jump to: navigation, search
To make corrections or additions to this article, select the edit tab above.
To discuss or ask questions about this article, select the discussion tab above.

Overview

This article provides instructions for adding single sign-on capabilities when external authentication is not an option. This can be beneficial if PIN is the selected authentication method.

This customization was designed for the r11.x releases, and is untested in older releases.

Procedures

Step 1. Edit the login.htmpl form

In the login.htmpl file, the following additions are needed. Click here to download an example login.htmpl file containing all the code provided below.

Add the following scripts near the top of the BODY where the other javascripts reside:

function createCookie(name,value,days){
 if(value != ""){
  n_value=encodeURIComponent(value);
 }else{
  n_value = "";
 }
 if(days){
  var date = new Date();
  date.setTime(date.getTime()+(days*24*60*60*1000));
  var expires = "; expires="+date.toGMTString();
 }
 else var expires = "";
 document.cookie = name+"="+n_value+expires+"; path=/";
}
 
function readCookie(name){
 var nameEQ = name + "=";
 var b = document.cookie.split(';');
 for(var i=0;i < b.length;i++){
  var c = b[i];
  while (c.charAt(0)==' ') c = c.substring(1,c.length);
  if (c.indexOf(nameEQ) == 0){
   d = c.substring(nameEQ.length,c.length);
   if(name == c_name1) g_id = d;
   if(name == c_name2) g_pin = d;
  }
 }
}
 
var c_name1 = "CA_USERNAME", c_name2 = "CA_PIN"; 
var g_id = "", g_pin = "";
var l_flag = 0;
var url_string = String(document.location);
var url_array = url_string.split('?');
if(url_array[1]){
 f = url_array[1];
 // if(f.indexOf("OP=LOGOUT") != -1) window.close(); //Closes window on LOGOUT
}else{
 readCookie(c_name1);
 readCookie(c_name2);
 if(g_id != "" && g_pin != "") l_flag = 1;
}

Replace the USERNAME and PIN input fields in the middle of the form with the two provided below:

<input type="text"
	   id="USERNAME" name="USERNAME"
	   size=20
	   onFocus="this.className='focusField';"
	   onBlur="this.className='';if(this.value != ''){createCookie('CA_USERNAME',this.value,1)};"> //ADDED createCookie
<input type="password"
	   id="PIN" name="PIN"
	   size=20
	   onFocus="this.className='focusField';"
	   onBlur="this.className='';if(this.value != ''){createCookie('CA_PIN',this.value,1)};"> //ADDED createCookie

Add the following near the bottom of the page:

<PDM_IF "$prop.WSPHOST" == "" && "$LoginErrMsg" == "">
if(l_flag == 1){
 //If the l_flag is set to 1, USERNAME and PIN is set and a pdm_submit is initiated for an automatic logon
 document.forms["login"].SID.value = "0";
 document.getElementById("USERNAME").value = g_id;
 document.getElementById("PIN").value = g_pin;
 pdm_submit('login','');
}
</PDM_IF>

For r11.x releases it is recommended that you edit your pages via the Web Screen Painter. For older releases you must edit the files directly.

Step 2. Clear the web cache

The final step is to clear Service Desk's cache. Publish your changes via the Web Screen Painter. The process of publishing automatically initiates a pdm_webcache.

This page was last modified 06:08, 6 August 2008.  This page has been accessed 2,289 times.  Content is available under Attribution-Noncommercial-Share Alike 3.0 UnportedDisclaimers