Oracle Forms SSO (Single Sign On)

Overview

Oracle9iAS Single Sign-On is built around the Single Sign-On Server, which enables users to log in to multiple Web-based applications using a single username and password.

To enable replay of scripts that test SSO enabled Oracle Forms applications, some customization steps are required to ensure use of the correct user ID’s for the Oracle Forms applications that are returned by logon procedures.

Customization

After you record an Oracle Forms script and run a TryScript you will probably encounter an error situation due to the recorded script containing the user ID that was used during recording. The user ID that is used during recording is passed as part of the first parameter to the OraFormsConnect method. The following code shows an OraFormsConnect function after recording:

OraFormsConnect(  
  "server module=mymodule.fmx userid=1234567890   sso_userid= record= names",
  "http://myserver:7779/forms90/l90servlet?ifcfs=/forms90/f90servlet?config= myapp",
  "http://myserver:7779/forms90/");

The user ID in the recorded OraFormsConnect is "1234567890" but this ID will probably change each time the user logs on to the system. To customize this value the following steps are required:

  • Open the TryScript TrueLog

  • Click the "Analyze Test" button on the Workflow Bar and choose "Compare your test run" so that the recorded TrueLog will open in compare mode

  • Browse to the HTML page that contains the <OBJECT> tag that instantiates the Oracle Forms applet. You will find this page just before the OraFormsConnect node.

  • Select the Response tab

  • You will see the difference between the recorded and replayed log files

  • Select the difference for the user ID value and parse this value into a variable. Select the "Parse Selected Text into a variable" command from the context menu

  • Specify a name for the variable

  • Return to Silk Performer and replace the recorded user ID value with the parsed variable

After customization your script should resemble the following:

dclparam
  sUserId : string;
...
WebParseDataBoundEx(sUserId, STRING_COMPLETE, "userid=", 4, "\"", 
WEB_FLAG_IGNORE_WHITE_SPACE | WEB_FLAG_CASE_SENSITIVE, 1);
WebPageSubmit("Logon", WSSO_LOGINSERVLET001);
Print("sUserId: " + sUserId);
...
OraFormsConnect(
  "server module=mymodule.fmx userid=" + sUserId + " sso_userid= record=names",
  "http://myserver:7779/forms90/l90servlet?ifcfs=/forms90/f90servlet?config=myapp",
  "http://myserver:7779/forms90/");

There may be other parameters that differ between record and replay. If you find such parameter values as constant strings contained in any of the Oracle Forms API functions, customize them in the same way that you customized the user ID.

Silk Performer's Oracle Forms Recorder will be enhanced in future versions to automate this customization process.