setup information - jasigjasig.275507.n4.nabble.com/attachment/2165461/0... · web viewsignon...

40
PeopleSoft CAS Configuration Contents Setup Information.................................................... 3 PeopleSoft Installations............................................3 CAS Installation....................................................3 Ticket Validation Java class.........................................3 validate()..........................................................3 SignOn PeopleCode.................................................... 3 Custom HTML files.................................................... 4 signin.html.........................................................4 signin_error.html...................................................5 logout_ps.html......................................................5 expire.html.........................................................5 Web Profile.......................................................... 5 Implementation....................................................... 6 Step 1 – Install Java class files...................................6 Step 2 – Install and Activate SignOn PeopleCode.....................6 Step 3 – Install custom HTML files..................................7 Step 4 – Web Profile................................................8 Step 5 – Configure Single Sign Out..................................9 Step 6 – User Profile Setup.........................................9 Debugging............................................................ 9 SignOn PeopleCode...................................................9 Write to log table................................................9 TracePC..........................................................10 PeopleCode Debugger..............................................10 University of Northern Iowa 1227 West 27 th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected] ) Last Updated: 3/4/2022 Page: 1/40

Upload: lycong

Post on 22-Mar-2018

219 views

Category:

Documents


4 download

TRANSCRIPT

PeopleSoft CAS Configuration

ContentsSetup Information.......................................................................................................................................3

PeopleSoft Installations...........................................................................................................................3

CAS Installation........................................................................................................................................3

Ticket Validation Java class..........................................................................................................................3

validate().................................................................................................................................................3

SignOn PeopleCode.....................................................................................................................................3

Custom HTML files.......................................................................................................................................4

signin.html...............................................................................................................................................4

signin_error.html.....................................................................................................................................5

logout_ps.html........................................................................................................................................5

expire.html..............................................................................................................................................5

Web Profile..................................................................................................................................................5

Implementation...........................................................................................................................................6

Step 1 – Install Java class files..................................................................................................................6

Step 2 – Install and Activate SignOn PeopleCode....................................................................................6

Step 3 – Install custom HTML files...........................................................................................................7

Step 4 – Web Profile................................................................................................................................8

Step 5 – Configure Single Sign Out..........................................................................................................9

Step 6 – User Profile Setup......................................................................................................................9

Debugging...................................................................................................................................................9

SignOn PeopleCode.................................................................................................................................9

Write to log table.................................................................................................................................9

TracePC..............................................................................................................................................10

PeopleCode Debugger.......................................................................................................................10

Logging from Java Class.........................................................................................................................11

SignOn PeopleCode...........................................................................................................................11

PsCasClient........................................................................................................................................11

Server Paths...............................................................................................................................................12

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 1/30

PeopleSoft CAS Configuration Enterprise Portal....................................................................................................................................12

Campus Solutions..................................................................................................................................12

Customer Relationship Management....................................................................................................12

Source Code..............................................................................................................................................13

PsCasClient (Ticket Validation Java Class)..............................................................................................13

VALIDATE_TICKET (SignOn PeopleCode)...............................................................................................14

signin.html.............................................................................................................................................16

signin_error.html...................................................................................................................................22

logout_ps.html......................................................................................................................................24

expire.html............................................................................................................................................24

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 2/30

PeopleSoft CAS Configuration

Setup Information

PeopleSoft InstallationsPeopleSoft Application Application Version PeopleTools Version

Enterprise Portal 9.10.00.209 8.50.06.000Campus Solutions 9.10.00.340 8.50.06.000Customer Relationship Management 9.00.00.340 8.50.00.061

CAS InstallationCAS version 3.3.5 with protocol version 2.0 and 1.0 enabled.

Ticket Validation Java classThe ticket validation class is called from custom SignOn PeopleCode. This class has one method validate() that accepts three parameters: fullUrl, ticket, and casPath.

This code requires that the Java environment provides support for SSL/HTTPSconnections. In the current PeopleSoft deployment this requires additional files fromSun which are distributed as the JSSE (Java Secure Socket Extension) package.

This class requires the following Java libraries to be installed on the application server: jsse.jar, jnet.jar, jcert.jar

validate()This method accepts three parameters: fullUrl, ticket, and casPath. The method attempts to validate the given ticket with the CAS server found at the given casPath for the provided service. A URL is created using the parameters to access the validate servlet provided within CAS. Upon successful validation CAS returns 2 lines as the response. The first line is YES or NO depending on the outcome of the validation. If the first line is YES the second line will contain the username of the logged in user. If the validation failed and the first line returns NO the second line will be blank.

SignOn PeopleCodeSignOn PeopleCode is invoked as part of the sign-on process. This code will only execute upon initial sign-on and not execute again unless the user comes back to PeopleSoft after logging out. This code obtains a ticket value and service value as part of the %Request object. These values are then passed to

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 3/30

PeopleSoft CAS Configuration the Ticket Validation Java Class. Based on the response from the Java class, the SetAuthenticationResult() method is called for the current user.

Create a new record with one field. Attach PeopleCode to that field’s FieldDefault event. Add the execution of this code to the SignOn PeopleCode chain so that CAS will be called during the sign-on process. The Exec Auth Fail field should be checked when adding this custom PeopleCode to SignOn PeopleCode. Checking that box tells PeopleSoft to run this code when PeopleSoft’s delivered authentication fails.

Custom HTML filesThe delivered HTML files from PeopleSoft are no longer valid when implementing CAS for PeopleSoft. All logins will occur on the CAS server and therefore no PeopleSoft sign-on form should be displayed to the user. The current deployment of PeopleSoft uses one page (signin.html) for signing in, logging off, and sign-on errors. Custom HTML files should be installed and the Web Profile updated to make use of these files. Since most requests to PeopleSoft are routed through signin.html, this page can be edited to redirect to CAS while passing the default page URL to CAS so that upon successful logon, the user is redirected to within PeopleSoft. If the user is redirected back to signin.html upon successful login, they will be caught in an infinite loop of redirects.

A custom logout page should also be provided for Single Sign Out. Uploading this file to the web server and setting the Web Profile to use this logout page will sign the user out of PeopleSoft and then redirect them (seamlessly) to the CAS logout.

signin.htmlThis is the main HTML file used by PeopleSoft for sign-on, logout, and sign-on errors. Most requests to PeopleSoft automatically redirect to this page via delivered methods. This page should be changed to redirect the user to CAS login. The service tag to be sent to CAS should be the default page (tab) for that PeopleSoft installation. For example, for Enterprise Portal, this would be something like https://sysprtfe1.student.uni.edu/psp/prtsys/EMPLOYEE/EMPL/h/?tab=DEFAULT. The user is redirected back to this “default” page to prevent being caught in an infinite loop of redirects if they were sent back to signin.html.

The delivered signin.html was copied and one JavaScript function was added to accomplish this. The function checks the Request URL to determine if the special case parameter CAS_PS was passed to the signin.html page. If CAS_PS is passed to the signin.html page, the delivered PeopleSoft login processes are followed. If the parameter is missing, CAS authentication is used. This was done to allow

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 4/30

PeopleSoft CAS Configuration administrative users access to PeopleSoft in the case that CAS is down. This parameter is not to be publicized outside of tech administrators.

signin_error.htmlOne assumption that is made when using CAS as the front-end to PeopleSoft is that a user who logs into CAS will have a PeopleSoft account matching the username used to authenticate with CAS. This may not always be the case, so signin_error.html is created to handle this situation. This page displays a generic error that authentication could not be performed and to contact the Help Desk. This page will get called via PeopleSoft delivered methods upon any sign-on error. Since all users getting to PeopleSoft (except admin users using the UNI_PS method) are already authenticated, it’s safe to assume most users reaching this page were successfully authenticated via CAS but do not have a PeopleSoft account. The Web Profile must be updated for this page to be used.

logout_ps.htmlPeopleSoft comes with a delivered logout procedure. UNI is implementing Single Sign Out with CAS, so this process needs to be extended to accomplish that. Adding this page to PeopleSoft will allow the delivered logout process to run and then redirect (seamlessly) the user to CAS logout. A CAS logout will then broadcast that logout to all other subscribing systems for that user. The Web Profile must be updated for this page to be used. The link used in logout_ps.html must be updated to the proper CAS server based on the instance it has been installed on.

expire.htmlUpdating this page is not a requirement of CAS implementation but is documented here since other HTML files are being updated at the time of CAS implementation. This page is a copy of the delivered expire.html page and then updated with UNI look and feel. No update to the Web Profile is required to use this file, just a restart of the web server.

Web ProfileIt is necessary to configure the Web Profile for the PeopleSoft instance that CAS is being enable for in order for CAS to work properly. “Allow Public Users” must be enabled with a valid user. A blank User Profile should be created with no roles or other security permissions. This will be the default user PeopleSoft attempts to login with. This allows the SignOn PeopleCode to trigger and redirect to CAS.

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 5/30

PeopleSoft CAS Configuration

Implementation

Step 1 – Install Java class files1. Compile the provided Ticket Validation Java Class (PsCasClient.java)2. Copy the compiled PsCasClient.class file to the Application Server

a. Enterprise Portal: /01/prt01/ps_home/pt850/appserv/classesb. Campus Solutions: /01/css01/ps_home/pt850/appserv/classesc. Customer Relationship Management: /01/crm01/ps_home/pt850/appserv/classes

3. Copy the Java security libraries: jsse.jar, jnet.jar, and jcert.jar to the Application Servera. Enterprise Portal: /01/prt01/ps_home/pt850/appserv/classesb. Campus Solutions: /01/css01/ps_home/pt850/appserv/classesc. Customer Relationship Management: /01/crm01/ps_home/pt850/appserv/classes

4. These changes will require a restart of the Application Server

Step 2 – Install and Activate SignOn PeopleCodeSteps to create all needed objects for the custom SignOn PeopleCode are provide, although the project UNI_ CAS contains all the needed objects and code.

1. Within Application Designera. Create a new Field named UNI_CAS_AUTHb. Create a new Record named UNI_CAS_SIGNON

i. This record should be Record Type: Derived/Workc. Add the new UNI_CAS_AUTH field to this recordd. Add the PeopleCode function VALIDATE_TICKET() to the FieldDefault for the

UNI_CAS_AUTH fielde. Build all objects into PeopleSoft

2. In PIA (web frontend)a. Go to PeopleTools, Security, Security Objects, Signon PeopleCodeb. Uncheck Enabled and Exec Auth Fail for all recordsc. Add a new line to this screen

i. Sequence: Next available number (7?)ii. Enabled: Checked

iii. Record: UNI_CAS_SIGNONiv. Field Name: UNI_CAS_AUTHv. Event Name: FieldDefault

vi. Function Name: VALIDATE_TICKETvii. Exec Auth Fail: Checked

d. Save SignOn PeopleCode3. These changes will require a restart of the Application Server

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 6/30

PeopleSoft CAS Configuration

Step 3 – Install custom HTML filesThese files should be uploaded to the PeopleSoft Web Server

1. Upload custom signin.html, signin_error.html, expire.html, logout_ps.html files to the Web ServerReplace prtsys, csssys, crmsys with the instance this is being installed on

a. Enterprise Portal: /01/prt01/ps_home/pt850/webserv/peoplesoft/applications/peoplesoft/PORTAL.war/WEB-INF/psftdocs/prtsys

b. Campus Solutions: /01/css01/ps_home/pt850/webserv/peoplesoft/applications/peoplesoft/PORTAL.war/WEB-INF/psftdocs/csssys

c. Customer Relationship Management: /01/crm01/ps_home/pt850/webserv/peoplesoft/applications/peoplesoft/PORTAL.war/WEB-INF/psftdocs/crmsys

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 7/30

PeopleSoft CAS Configuration 2. Within PIA (web fronted)

a. Go to PeopleTools, Web Profile, Web Profile Configurationb. Choose the current Web Profile being usedc. Look and Feel tab

i. Signon/Logout Pages1. Signon Error Page: signin_error.html2. Logout Page: logout_ps.html

3. These changes will require a restart of the Web Server

Step 4 – Web ProfileA default_user User Profile is required to be used within the Web Profile for CAS to function properly

1. Create a new User Profile (PeopleTools, Security, User Profiles, User Profiles)a. User ID: default_cas_userb. General tab

i. Account Locked? checkedii. Symbolic ID: SYSADM1

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 8/30

PeopleSoft CAS Configuration iii. Password: random passwordiv. Confirm Password: random password

c. ID tabi. ID Type: None (must actually select None)

ii. Description: Default CAS User2. Edit Security settings for Web Profile (PeopleTools, Web Profile, Web Profile Configuration)

a. Choose the current Web Profile being usedb. Security tab

i. Public Users1. Allow Public Access: checked2. User ID: default_cas_user3. Password: default_cas_user’s password set in the previous step4. HTTP Session Inactivity: 0

3. These changed will require a restart of the Web Server

Step 5 – Configure Single Sign Out UNI has decided to not implement single sign out at this time.

Step 6 – User Profile SetupFor CAS to fully function User Profiles must be set up within PeopleSoft to match CAS usernames. Without the PeopleSoft User Profiles, users will receive an Authentication Error and never be able to get into PeopleSoft via CAS.

Debugging

SignOn PeopleCodeWinMessage does not work in SignOn PeopleCode. This is by design.

Write to log tableThe easiest and most useful way to debug SignOn PeopleCode is to create a log table and write records to the table throughout the execution of the PeopleCode. An excerpt of some sample code with debugging is provided below:

Function VALIDATE_TICKET() /* Flag for debugging */ Local boolean &debug = True;

SQLExec("insert into ps_uni_cas_logs (created_dttm,descr200) values (sysdate,'starting VALIDATE_TICKET()')"); SQLExec("COMMIT");

try /* Path to CAS server */ Local string &casPath = "https://cas.uni.edu/cas/validate";

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 9/30

PeopleSoft CAS Configuration /**************** DEBUGGING **********************/ Local boolean &authResult = %PSAuthResult; SQLExec("insert into ps_uni_cas_logs (created_dttm,descr200) values (sysdate,'PSAuthResult(var): ' || :1)", &authResult); SQLExec("COMMIT");

SQLExec("insert into ps_uni_cas_logs (created_dttm,descr200) values (sysdate,'SignOnUserId: ' || :1)", %SignonUserId); SQLExec("COMMIT"); /**************** /DEBUGGING **********************/

SQLExec("insert into ps_uni_cas_logs (created_dttm,descr200) values (sysdate,'PSAuthResult is false')"); SQLExec("COMMIT");

/* Get Java class object to validate ticket */ &validator = GetJavaClass("PsCasClient");

SQLExec("insert into ps_uni_cas_logs (created_dttm,descr200) values (sysdate,'got java class')"); SQLExec("COMMIT");

/* Retrieve fullUrl and ticket value from HTTP request */ &fullUrl = %Request.FullURI | "?" | %Request.QueryString; &ticket = %Request.GetParameter("ticket");

SQLExec("insert into ps_uni_cas_logs (created_dttm,descr200) values (sysdate,'FullUrl: ' || :1)", &fullUrl); SQLExec("COMMIT");

SQLExec("insert into ps_uni_cas_logs (created_dttm,descr200) values (sysdate,'Ticket: ' || :1)", &ticket); SQLExec("COMMIT");

If (&debug = True) Then &validator.logMessage("Request: " | &fullUrl); &validator.logMessage(" Ticket: " | &ticket); End-If;

. . . . code snipped . . . .

TracePCYou can also trace SignOn PeopleCode by setting the tracePC flag in appserv.cfg but the value cannot be arrived at using the settings from the Sign-on page. Set tracePC=3596 in appserv.cfg and the trace results will be output to a file. The file will be located at in the LOGS directory on the Application Server with a path similar to /01/prt01/ps_home/psft/appserv/PRTSYS/LOGS.

PeopleCode DebuggerTo debug SignOn PeopleCode by stepping through the PeopleCode you will need to login with the same user ID as the one that started the Application Server. Also the “Invoke As” ID on the SignOn PeopleCode page must also be the same ID as in appserv.cfg. This method was not used at UNI.

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 10/30

PeopleSoft CAS Configuration

Logging from Java ClassYou may also write to a file from within the Ticket Validation Java Class (PsCasClient.java). The delivered class comes with a logMessage() method to log messages to a file found at /01/prt01/ps_home/psft/cas/pscas_signon_log.txt. This method can then be called from the SignOn PeopleCode or from within the actual class. The delivered class some with a global DEBUG flag that is defaulted to false. Set this flag to true, recompile the class, re-install the class file on the app server, restart the app server and the class file will write log messages to the file defined in logMessage().

SignOn PeopleCodeTo call logMessage() from the SignOn PeopleCode:

/* Get Java class object to validate ticket */&validator = GetJavaClass("PsCasClient");

/* Retrieve fullUrl and ticket value from HTTP request */&fullUrl = %Request.FullURI | "?" | %Request.QueryString;&ticket = %Request.GetParameter("ticket");

&validator.logMessage("Request: " | &fullUrl);&validator.logMessage(" Ticket: " | &ticket);

PsCasClientTo log messages from within the Ticket Validation Class:

if (DEBUG) logMessage("Service: " + service);

URL u = new URL(CasPath + "?method=POST&ticket=" + ticket + "&service=" + service);

if (DEBUG) logMessage("Created URL: " + u);

BufferedReader in = new BufferedReader(new InputStreamReader(u.openStream()));if (in == null) { if (DEBUG) logMessage("Invalid URL used to validate CAS: " + u); return null;}

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 11/30

PeopleSoft CAS Configuration

Server PathsReplace prtsys, csssys, crmsys with instance CAS is being installed/configured on

Enterprise PortalApp Server Logs

/01/prt01/ps_home/psft/appserv/PRTSYS/LOGS

Java classes /01/prt01/ps_home/pt850/appserv/classesHTML files /01/prt01/ps_home/pt850/webserv/peoplesoft/applications/peoplesoft/

PORTAL.war/WEB-INF/psftdocs/prtsysOther HTML files (signon.html)

/01/prt01/ps_home/pt850/webserv/peoplesoft/applications/PORTAL.war/prtsys** Note: changing signon.html in this location proved to not make any difference, therefore all files found in this directory were left as delivered

Campus SolutionsApp Server Logs

/01/css01/ps_home/psft/appserv/CSSSYS/LOGS

Java classes /01/css01/ps_home/pt850/appserv/classesHTML files /01/css01/ps_home/pt850/webserv/peoplesoft/applications/peoplesoft/

PORTAL.war/WEB-INF/psftdocs/csssysOther HTML files (signon.html)

/01/css01/ps_home/pt850/webserv/peoplesoft/applications/PORTAL.war/csssys** Note: changing signon.html in this location proved to not make any difference, therefore all files found in this directory were left as delivered

Customer Relationship ManagementApp Server Logs

/01/crm01/ps_home/psft/appserv/CSSSYS/LOGS

Java classes /01/crm01/ps_home/pt850/appserv/classesHTML files /01/crm01/ps_home/pt850/webserv/peoplesoft/applications/peoplesoft/

PORTAL.war/WEB-INF/psftdocs/crmsysOther HTML files (signon.html)

/01/crm01/ps_home/pt850/webserv/peoplesoft/applications/PORTAL.war/crmsys** Note: changing signon.html in this location proved to not make any difference, therefore all files found in this directory were left as delivered

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 12/30

PeopleSoft CAS Configuration

Source Code

PsCasClient (Ticket Validation Java Class)import com.sun.net.ssl.internal.ssl.Provider;

import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileWriter;import java.io.IOException;import java.io.InputStreamReader;

import java.net.URL;import java.net.URLEncoder;

import java.security.Security;

import java.text.SimpleDateFormat;

import java.util.Date;

public class PsCasClient {

private static final boolean DEBUG = false;

public PsCasClient() { }

/* Returns the CatID of the owner of the given ticket, or null if the ticket isn't valid. * * Parameters: * fullUrl - The service ID for the application validating the ticket, including the ticket parameter which must be removed * ticket - the opaque service ticket (ST) to validate * casPath - the path to the CAS server to be used to validate the given ticket */ public static String validate(String fullUrl, String ticket, String CasPath) throws IOException { if (DEBUG) logMessage("CasPath: " + CasPath);

try { Security.addProvider(new Provider());

System.setProperty("java.protocol.handler.pkgs","com.sun.net.ssl.internal.www.protocol"); int ticketParamIndex = fullUrl.lastIndexOf("&ticket="); String service = null; if (ticketParamIndex != -1) { service = URLEncoder.encode(fullUrl.substring(0,ticketParamIndex),"UTF-8"); } else { service = URLEncoder.encode(fullUrl,"UTF-8"); }

if (DEBUG) logMessage("Service: " + service);

URL u = new URL(CasPath + "?method=POST&ticket=" + ticket + "&service=" + service);

if (DEBUG) logMessage("Created URL: " + u);

BufferedReader in = new BufferedReader(new InputStreamReader(u.openStream())); if (in == null) { if (DEBUG) logMessage("Invalid URL used to validate CAS: " + u); return null; }

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 13/30

PeopleSoft CAS Configuration String line1 = in.readLine(); String line2 = in.readLine();

if (DEBUG) { logMessage("line1: " + line1); logMessage("line2: " + line2); }

if (line1 != null && line2 != null && line1.equals("yes")) { String user = line2; if (DEBUG) logMessage("Returning user: " + user); return user; } else { if (DEBUG) logMessage("Invalid Ticket"); return null; }

} catch (Exception e) { if (DEBUG) logMessage("ERROR: Exception during CAS validate() " + e.getMessage()); ; }

return null; }

public static void logMessage(String message) { SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss "); Date now = new Date();

//System.out.println(formatter.format(now) + message); try { //BufferedWriter os = new BufferedWriter(new FileWriter("/01/prt01/ps_home/psft/cas/pscas_signon_log.txt",true)); BufferedWriter os = new BufferedWriter(new FileWriter("pscas_signon_log.txt",true)); os.write(formatter.format(now)); os.write(message); os.write("\n"); os.close(); } catch (IOException e) { if (DEBUG) System.out.println("ERROR: Error when attempting to log error [" + message + "]: " + e.getMessage()); } }

public static void main(String[] args) { try { validate("http://www.uni.edu","TICKET","Y"); } catch (IOException e) { System.out.println(e.getMessage()); } }}

VALIDATE_TICKET (SignOn PeopleCode)/***************************************************************************** * UNI_CAS_SIGNON.UNI_CAS_AUTH.VALIDATE_TICKET * This PeopleCode must be enabled through the SignOn PeopleCode screen. * * This function obtains a ticket value from the web * request and then creates a Java object which is used to validate the ticket. * If all goes well setAuthenticationResult sets the user context to the * correct userID. Otherwise PSAuthResult remains False. * ------------------------------------------------------------------------------ * Written: 03/08/2010

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 14/30

PeopleSoft CAS Configuration * Author: Chad M Wittrock * Modifications: * 03/08/2010 cmw Written *****************************************************************************/Function VALIDATE_TICKET()

/* Flag for debugging */ Local boolean &debug = False;

try /******************************************************************************/ /* Path to CAS server

*/ Local string &casPrdPath = "https://cas.uni.edu/cas/validate"; Local string &casStgPath = "https://casstage.uni.edu/cas/validate"; Local string &casTstPath = "https://castest.uni.edu/cas/validate";

/* Default Test CAS server */ Local string &casPath = &casTstPath;

If (Find(%Request.FullURI, "prtprd") > 0) Then &casPath = &casPrdPath; Else If (Find(%Request.FullURI, "cssprd") > 0) Then &casPath = &casPrdPath; Else If (Find(%Request.FullURI, "crmprd") > 0) Then &casPath = &casPrdPath; Else If (Find(%Request.FullURI, "prtstg") > 0) Then &casPath = &casStgPath; Else If (Find(%Request.FullURI, "cssstg") > 0) Then &casPath = &casStgPath; Else If (Find(%Request.FullURI, "crmstg") > 0) Then &casPath = &casStgPath; End-If; End-If; End-If; End-If; End-If; End-If; /*****************************************************************************/

/* Get Java class object to validate ticket */ &validator = GetJavaClass("PsCasClient");

/* Retrieve fullUrl and ticket value from HTTP request */ &fullUrl = %Request.FullURI | "?" | %Request.QueryString; &ticket = %Request.GetParameter("ticket");

If (&debug = True) Then &validator.logMessage("Request: " | &fullUrl); &validator.logMessage(" Ticket: " | &ticket); End-If;

If &ticket <> "" Then /* Have a ticket, load CAS client class and attempt to validate */ &cas_result = &validator.validate(&fullUrl, &ticket, &casPath);

If &debug = True Then &validator.logMessage(" Result: " | &cas_result); End-If;

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 15/30

PeopleSoft CAS Configuration /* Check if got result from CAS (username) */ If &cas_result <> Null Then /* User is authenticated, log them into PeopleSoft */ SetAuthenticationResult( True, &cas_result, "", False); Return; Else /* User could not be validated from CAS, mark as not logged into PeopleSoft */ SetAuthenticationResult( False, "", "CAS cannot authenticate user.", False); Return; End-If; /* got username back from CAS */ End-If; /* got ticket */

catch Exception &excepMessage Local File &logFile; &logFile = GetFile("CAS_LOGIN_PAR.LOG", "A", %FilePath_Relative); &logFile.WriteLine("Error: " | &excepMessage.ToString() | " - " | %Date | " " | %Time | Char(13)); &logFile.Close(); end-try;End-Function;

signin.html<html dir=<%=direction%> lang=<%=language%>><HEAD><!--* *************************************************************** * This software and related documentation are provided under a * license agreement containing restrictions on use and * disclosure and are protected by intellectual property * laws. Except as expressly permitted in your license agreement * or allowed by law, you may not use, copy, reproduce, * translate, broadcast, modify, license, transmit, distribute, * exhibit, perform, publish or display any part, in any form or * by any means. Reverse engineering, disassembly, or * decompilation of this software, unless required by law for * interoperability, is prohibited. * The information contained herein is subject to change without * notice and is not warranted to be error-free. If you find any * errors, please report them to us in writing. * * Copyright (C) 1988, 2009, Oracle and/or its affiliates. * All Rights Reserved. * *************************************************************** --><!--*--><TITLE><%=138%></TITLE>

<link rel="stylesheet" href="<%=psCtxPath%><%=psHome%>/styles.css" rel="stylesheet" type="text/css"><style type="text/css"><!--a:link { color: #48598c;}a:visited { color: #48598C;}a:hover { color: #48598C;}a:active {

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 16/30

PeopleSoft CAS Configuration color: #48598C;}body { margin-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px;}-->window.history.forward(1);</style></HEAD><script LANGUAGE="JavaScript">function signin(form) { var docLoc=new String(document.location); var iLast= docLoc.lastIndexOf("?&"); if (docLoc.length == (iLast+2)) { docLoc = docLoc.substring(0, iLast); }

if (docLoc.indexOf("?cmd=")==-1 && docLoc.indexOf("?")!=-1) { if (docLoc.indexOf("&cmd=login")==-1) { var i=docLoc.length - 1; var j= docLoc.lastIndexOf("&"); if (j!=-1 && i==j) form.action=docLoc+form.action.substring(form.action.indexOf("?")+1,form.action.length); else form.action=docLoc+"&"+form.action.substring(form.action.indexOf("?")+1,form.action.length); } else form.action=docLoc.substring(0,docLoc.indexOf("&cmd=login"))+"&cmd=login"+docLoc.substring(docLoc.indexOf("&languageCd="),docLoc.length); }

var now=new Date(); form.timezoneOffset.value=now.getTimezoneOffset(); return ; }

function setFocus() { try {document.login.userid.focus()} catch (e) {}; return; }

function setErrorImg() { var login_error = document.getElementById('login_error').innerHTML; var discovery_error = document.getElementById('discovery_error').innerHTML; var browsercheck_error = document.getElementById('browsercheck_error').innerHTML; login_error = login_error.replace(/^\s+/,""); // delete leading spaces discovery_error = discovery_error.replace(/^\s+/,""); browsercheck_error = browsercheck_error.replace(/^\s+/,"");

if (login_error.length != 0 || discovery_error.length != 0 || browsercheck_error.length != 0) { document.getElementById('error_img').style.display = 'block'; document.getElementById('error_link').focus(); } else

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 17/30

PeopleSoft CAS Configuration setFocus(); }

function cas() {var docLoc=new String(document.location);

if (docLoc.indexOf("&CAS_PS=1")==-1) {

// Determine what CAS server and service path to use var casPath = "https://castest.uni.edu/cas/login"; var servicePath = ""; if (docLoc.indexOf("prtprd") > 0 || docLoc.indexOf("cssprd") > 0 || docLoc.indexOf("crmprd") > 0) { casPath = "https://cas.uni.edu/cas/login";

if (docLoc.indexOf("prtprd") > 0) { servicePath = "https://student.uni.edu/psp/prtprd/EMPLOYEE/EMPL/h/?tab=DEFAULT"; } else if (docLoc.indexOf("cssprd") > 0) { servicePath = "https://student.uni.edu/psp/cssprd/EMPLOYEE/HRMS/h/?tab=DEFAULT"; } else if (docLoc.indexOf("crmprd") > 0) { servicePath = "https://student.uni.edu/psp/crmprd/EMPLOYEE/CRM/h/?tab=DEFAULT"; }

} else if (docLoc.indexOf("prtstg") > 0 || docLoc.indexOf("cssstg") > 0 || docLoc.indexOf("crmstg") > 0) { casPath = "https://casstage.uni.edu/cas/login";

if (docLoc.indexOf("prtstg") > 0) { servicePath = "https://stgprtfe1.student.uni.edu/psp/prtstg/EMPLOYEE/EMPL/h/?tab=DEFAULT"; } else if (docLoc.indexOf("cssstg") > 0) { servicePath = "https://stgcssfe1.student.uni.edu/psp/cssstg/EMPLOYEE/HRMS/h/?tab=DEFAULT"; } else if (docLoc.indexOf("crmstg") > 0) { servicePath = "https://stgcrmfe1.student.uni.edu/psp/crmstg/EMPLOYEE/CRM/h/?tab=DEFAULT"; }

} else if (docLoc.indexOf("prttst") > 0 || docLoc.indexOf("csstst") > 0 || docLoc.indexOf("crmtst") > 0) { casPath = "https://castest.uni.edu/cas/login";

if (docLoc.indexOf("prttst") > 0) { servicePath = "https://tstprtfe1.student.uni.edu/psp/prttst/EMPLOYEE/EMPL/h/?tab=DEFAULT"; } else if (docLoc.indexOf("csstst") > 0) { servicePath = "https://tstcssfe1.student.uni.edu/psp/csstst/EMPLOYEE/HRMS/h/?tab=DEFAULT"; } else if (docLoc.indexOf("crmtst") > 0) { servicePath = "https://tstcrmfe1.student.uni.edu/psp/crmtst/EMPLOYEE/CRM/h/?tab=DEFAULT"; }

} else if (docLoc.indexOf("prtsys") > 0 || docLoc.indexOf("csssys") > 0 ||

docLoc.indexOf("crmsys") > 0) { casPath = "https://castest.uni.edu/cas/login";

if (docLoc.indexOf("prtsys") > 0) { servicePath = "https://sysprtfe1.student.uni.edu/psp/prtsys/EMPLOYEE/EMPL/h/?tab=DEFAULT"; } else if (docLoc.indexOf("csssys") > 0) { servicePath = "https://syscssfe1.student.uni.edu/psp/csssys/EMPLOYEE/HRMS/h/?tab=DEFAULT";

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 18/30

PeopleSoft CAS Configuration } else if (docLoc.indexOf("crmsys") > 0) { servicePath = "https://syscrmfe1.student.uni.edu/psp/crmsys/EMPLOYEE/CRM/h/?tab=DEFAULT"; }

} else if (docLoc.indexOf("prtdmo") > 0 || docLoc.indexOf("cssdmo") > 0 ||

docLoc.indexOf("crmdmo") > 0) { casPath = "https://castest.uni.edu/cas/login";

if (docLoc.indexOf("prtdmo") > 0) { servicePath = "https://dmoprtfe1.student.uni.edu/psp/prtdmo/EMPLOYEE/EMPL/h/?tab=DEFAULT"; } else if (docLoc.indexOf("cssdmo") > 0) { servicePath = "https://dmocssfe1.student.uni.edu/psp/cssdmo/EMPLOYEE/HRMS/h/?tab=DEFAULT"; } else if (docLoc.indexOf("crmdmo") > 0) { servicePath = "https://dmocrmfe1.student.uni.edu/psp/crmdmo/EMPLOYEE/CRM/h/?tab=DEFAULT"; }

} else { // Default to PRTDEV casPath = "https://castest.uni.edu/cas/login";

if (docLoc.indexOf("cssdev") > 0) { servicePath = "https://devcssfe1.student.uni.edu/psp/cssdev/EMPLOYEE/HRMS/h/?tab=DEFAULT"; } else if (docLoc.indexOf("crmdev") > 0) { servicePath = "https://devcrmfe1.student.uni.edu/psp/crmdev/EMPLOYEE/CRM/h/?tab=DEFAULT"; } else { servicePath = "https://devprtfe1.student.uni.edu/psp/prtdev/EMPLOYEE/EMPL/h/?tab=DEFAULT"; } }

// Determine the URL to have CAS redirect back

document.location=casPath+"?method=POST&service="+servicePath;}

}

function submitAction(form){signin(form);form.Submit.disabled=true;form.submit();}

</script><BODY onLoad="cas();setErrorImg(); <%=framebreak%>"><table width="100%" height="99%" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="96" align="center" valign="middle"><img src="<%=psCtxPath%><%=psHome%>/images/OPSE_logo.gif" alt="<%=131%>" width="322" height="96"></td> </tr> <tr> <td height="250" align="center" valign="middle"><TABLE width="590" border=0 cellPadding=0 cellSpacing=0> <TR> <TD width="600" height="318" align=center valign="top"> <table width="100%" height="273" border="0" cellpadding="0" cellspacing="0"> <tr> <td><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="50%" height="200" valign="middle" class="psloginframe"> <table width="100%" border="0" cellspacing="0" cellpadding="0">

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 19/30

PeopleSoft CAS Configuration <form action="?cmd=login&languageCd=<%=languageCd%>" method="post" id="login" name="login" autocomplete=off onSubmit="signin(document.login)"> <input type="hidden" name="timezoneOffset" value="0"> <table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <div style="text-align:center"> <h1 id="error_img" style="display:none"><a id ="error_link" href="javascript:setFocus();" tabindex="1"><img src="<%=psCtxPath%><%=psHome%>/images/PT_LOGIN_ERROR.gif" alt="<%=130%>" border="0"/></a></h1> <h2 class="psloginerror" id="login_error"> <%=error%> </h2> <h2 class="psloginerror" id="discovery_error"> <%=ps.discovery.error%> </h2> <h2 class="psloginerror" id="browsercheck_error" style="text-align:left"> <%=browserCheck%> </h2> </div> </tr> <tr> <td width="45%" height="25" align="right"><label for='userid' class='psloginlabel'><%=133%></label></td> <td width="1%" height="25">&nbsp;</td> <td width="54%" height="25"><input id="userid" name="userid" type="text" class="pslogineditbox" value="<%=USERID%>" size="15" tabindex="2"></a></td> </tr> <tr> <td height="35" align="right"><label for='pwd' class='psloginlabel'><%=134%></label></td> <td height="35">&nbsp;</td> <td height="35"><input TYPE="password" id="pwd" name="pwd" class="pslogineditbox" size="15" tabindex="3"></td> </tr> <tr> <td height="35">&nbsp;</td> <td height="35">&nbsp;</td> <td height="35"><input name="Submit" type="submit" class="psloginbutton" tabindex="4" value="<%=137%>" onclick="submitAction(document.login)"></td> </tr> </table></td> <td width="50%" rowspan="2" align="center" class="pslanguageframe"><table width="90%" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="25" valign="middle" class="psloginlabel"><%=132%></td> </tr> <tr> <td valign="top" class="psloginlabel"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="50%" class="pslogintext"><a href="?cmd=login&amp;languageCd=ENG" title="<%=psENG%>">English</a></td> <td width="50%" class="pslogintext"><a href="?cmd=login&amp;languageCd=ESP" title="<%=psESP%>">Espa&ntilde;ol</a></td> </tr> <tr> <td width="50%" class="pslogintext"><a href="?cmd=login&amp;languageCd=DAN" title="<%=psDAN%>">Dansk</a></td> <td width="50%" class="pslogintext"><a href="?cmd=login&amp;languageCd=GER" title="<%=psGER%>">Deutsch</a></td> </tr> <tr> <td width="50%" class="pslogintext"><a href="?cmd=login&amp;languageCd=FRA" title="<%=psFRA%>">Fran&ccedil;ais</a></td> <td width="50%" class="pslogintext"><a href="?cmd=login&amp;languageCd=CFR" title="<%=psCFR%>">Fran&ccedil;ais&nbsp;du&nbsp;Canada</a></td> </tr> <tr> <td width="50%" class="pslogintext"><a href="?cmd=login&amp;languageCd=ITA" title="<%=psITA%>">Italiano</a></td> <td width="50%" class="pslogintext"><a href="?cmd=login&amp;languageCd=HUN" title="<%=psHUN%>">Magyar</a></td>

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 20/30

PeopleSoft CAS Configuration </tr> <tr> <td width="50%" class="pslogintext"><a href="?cmd=login&amp;languageCd=DUT" title="<%=psDUT%>">Nederlands</a></td> <td width="50%" class="pslogintext"><a href="?cmd=login&amp;languageCd=NOR" title="<%=psNOR%>">Norsk</a></td> </tr> <tr> <td width="50%" class="pslogintext"><a href="?cmd=login&amp;languageCd=POL" title="<%=psPOL%>">Polski</a></td> <td width="50%" class="pslogintext"><a href="?cmd=login&amp;languageCd=POR" title="<%=psPOR%>">Portugu&ecirc;s</a></td> </tr> <tr> <td width="50%" class="pslogintext"><a href="?cmd=login&amp;languageCd=FIN" title="<%=psFIN%>">Suomi</a></td> <td width="50%" class="pslogintext"><a href="?cmd=login&amp;languageCd=SVE" title="<%=psSVE%>">Svenska</a></td> </tr> <tr> <td width="50%" class="textnormal"><a href="?cmd=login&languageCd=CZE"><img src="<%=psCtxPath%><%=psHome%>/images/language_cze.gif" width="44" height="16" border="0" title="<%=psCZE%>" alt="<%=psCZE%>"/></a></td> <td width="50%" class="textnormal"><a href="?cmd=login&languageCd=JPN"><img src="<%=psCtxPath%><%=psHome%>/images/language_japanese.gif" width="37" height="16" border="0" title="<%=psJPN%>" alt="<%=psJPN%>"/></a></td> </tr> <tr> <td width="50%" class="textnormal"><a href="?cmd=login&languageCd=KOR"><img src="<%=psCtxPath%><%=psHome%>/images/korean.gif" width="34" height="16" border="0" title="<%=psKOR%>" alt="<%=psKOR%>"/></a></td> <td width="50%" class="textnormal"><a href="?cmd=login&languageCd=RUS"><img src="<%=psCtxPath%><%=psHome%>/images/language_rus.gif" width="50" height="16" border="0" title="<%=psRUS%>" alt="<%=psRUS%>"/></a></td> </tr> <tr> <td width="50%" class="textnormal"><a href="?cmd=login&languageCd=THA"><img src="<%=psCtxPath%><%=psHome%>/images/language_tha.gif" width="24" height="16" border="0" title="<%=psTHA%>" alt="<%=psTHA%>"/></a></td> <td width="50%" class="textnormal"><a href="?cmd=login&languageCd=ZHS"><img src="<%=psCtxPath%><%=psHome%>/images/schinese.gif" width="53" height="16" border="0" title="<%=psZHS%>" alt="<%=psZHS%>"/></a></td> </tr> <tr> <td width="50%" class="textnormal"><a href="?cmd=login&languageCd=ZHT"><img src="<%=psCtxPath%><%=psHome%>/images/tchinese.gif" width="53" height="16" border="0" title="<%=psZHT%>" alt="<%=psZHT%>"/></a></td> <td width="50%" class="textnormal"><a href="?cmd=login&languageCd=ARA"><img src="<%=psCtxPath%><%=psHome%>/images/arabic.gif" width="32" height="16" border="0" title="<%=psARA%>" alt="<%=psARA%>"/></a></td> </tr> <tr> <td width="50%" class="pslogintext"><a href="?cmd=login&amp;languageCd=UKE" title="<%=psUKE%>">UK English</a></td> </tr> </table></td> </tr> </table></td> </tr> <tr> <td height="80" valign="middle" class="psmessageframe">

<table width="100%" border="0" cellspacing="0" cellpadding="5"> <tr> <td><div style="text-align:center"><p class="pslogintext"><%=traceLink%></p></div></td> </tr> </table></td> </tr>

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 21/30

PeopleSoft CAS Configuration </table></td> </tr> </table></TD> </TR> <TR> <TD align=center>&nbsp;</TD> </TR> </TBODY> </TABLE></td> </tr> <tr> <td valign="bottom"><table width="100%" border="0" cellspacing="0" cellpadding="5"> <tr> <td height="30" colspan="2" valign="bottom" class="pslogincopyright">&nbsp;</td> </tr> <tr> <td width="50%" valign="bottom" class="pslogincopyright"><%=146%></td> <td width="569">&nbsp;</td> </tr> </table></td> </tr></table></BODY></HTML>

signin_error.html<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN"><HTML>

<HEAD><META HTTP-EQUIV="Expires" CONTENT="Tue, 04 Dec 1993 21:29:02 GMT"><META HTTP-EQUIV="Pragma" CONTENT="no-cache"><META content="text/html; charset=iso-8859-1" http-equiv=Content-Type><META NAME="Published" CONTENT="Tuesday, June 10, 1997"><TITLE>Error Logging In</TITLE>

<LINK REL=stylesheet HREF="https://access.uni.edu/styles/access.css" TYPE="text/css">

</HEAD>

<BODY><table width="950" align="center" cellpadding="0" cellspacing="0" border="0"

style="padding: 0 0; margin: 0 auto; background-color: #4b116f;"><tr>

<td valign=top rowspan=2><a href="http://www.uni.edu/">

<img src="https://access.uni.edu/images/nameplate.png" alt="University of Northern Iowa" width="209" height="70" border="0" style="margin: 7px 10px 5px 10px;"/>

</a></td><td align=right valign=top>

<a href="https://access.uni.edu/cgi-bin/portal/portHandler.cgi" style="font-family: Arial, helvetica, sans-serif; font-size: 9pt; font-weight: normal; color: #fff; text-align: right; padding: .5px 0px 0px 0px; margin: 0px 0px 0px 0px;text-decoration: none; padding: 0px 0px 0px 0px; margin: 0px 6px 0px 6px;" onmouseover="mouseOver(this)" onmouseout="mouseOut(this)">MyUNIverse</a>

<font style="font-family: Arial, helvetica, sans-serif; font-size: 9pt; font-weight: normal; color: #fff; text-decoration: none;">|</font>

<a href="http://www.uni.edu/email/" style="font-family: Arial, helvetica, sans-serif; font-size: 9pt; font-weight: normal; color: #fff; text-align: right; padding: .5px 0px 0px 0px; margin: 0px 0px 0px 0px;text-decoration: none; padding: 0px 0px 0px 0px; margin: 0px 6px 0px 6px;" onmouseover="mouseOver(this)" onmouseout="mouseOut(this)">E-Mail</a>

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 22/30

PeopleSoft CAS Configuration <font style="font-family: Arial, helvetica, sans-

serif; font-size: 9pt; font-weight: normal; color: #fff; text-decoration: none;">|</font><a href="http://elearning.uni.edu/" style="font-family:

Arial, helvetica, sans-serif; font-size: 9pt; font-weight: normal; color: #fff; text-align: right; padding: .5px 0px 0px 0px; margin: 0px 0px 0px 0px;text-decoration: none; padding: 0px 0px 0px 0px; margin: 0px 6px 0px 6px;" onmouseover="mouseOver(this)" onmouseout="mouseOut(this)">eLearning</a>

<font style="font-family: Arial, helvetica, sans-serif; font-size: 9pt; font-weight: normal; color: #fff; text-decoration: none;">|</font>

<a href="http://www.uni.edu/infosys/siteindex.shtml" style="font-family: Arial, helvetica, sans-serif; font-size: 9pt; font-weight: normal; color: #fff; text-align: right; padding: .5px 0px 0px 0px; margin: 0px 0px 0px 0px;text-decoration: none; padding: 0px 0px 0px 0px; margin: 0px 6px 0px 6px;" onmouseover="mouseOver(this)" onmouseout="mouseOut(this)">A-Z Index</a>

<font style="font-family: Arial, helvetica, sans-serif; font-size: 9pt; font-weight: normal; color: #fff; text-decoration: none;">|</font>

<a href="/acal/" style="font-family: Arial, helvetica, sans-serif; font-size: 9pt; font-weight: normal; color: #fff; text-align: right; padding: .5px 0px 0px 0px; margin: 0px 0px 0px 0px;text-decoration: none; padding: 0px 0px 0px 0px; margin: 0px 6px 0px 6px;" onmouseover="mouseOver(this)" onmouseout="mouseOut(this)">Calendar</a>

<font style="font-family: Arial, helvetica, sans-serif; font-size: 9pt; font-weight: normal; color: #fff; text-decoration: none;">|</font>

<a href="http://www.uni.edu/directory" style="font-family: Arial, helvetica, sans-serif; font-size: 9pt; font-weight: normal; color: #fff; text-align: right; padding: .5px 0px 0px 0px; margin: 0px 0px 0px 0px;text-decoration: none; padding: 0px 0px 0px 0px; margin: 0px 6px 0px 6px;" onmouseover="mouseOver(this)" onmouseout="mouseOut(this)">Directory</a>

</td></tr><tr>

<td align=right valign=bottom><div style="margin-bottom: 4px; margin-right: 4px;">

<table border=0 cellpadding=0 cellspacing=0> <tr style="background-color:#fc0;"> <td style="background-color:#4b116f;"><input

type="text" value="Search..." onFocus="this.value='';" onkeypress='e = event || window.event; if (e) {if (e.keyCode == 13) {document.location.href="http://www.uni.edu/search/?cx=011098738754097199461:oywhsfqqr2s&cof=FORID:9&submit=Search UNI&q="+document.getElementById("q").value;}}' name="q" id="q" size="14"/>&nbsp;</td>

<td style="border-top: solid 1px #4b116f; border-bottom: solid 1px #4b116f;">

<a onclick='if (document.getElementById("q").value == "" || document.getElementById("q").value == " "){document.location.href="http://www.uni.edu/search";} else {document.location.href="http://www.uni.edu/search/?cx=011098738754097199461:oywhsfqqr2s&cof=FORID:9&submit=Search UNI&q="+document.getElementById("q").value;}' href="#" style="font-size: 12px; font-family: Arial, helvetica, sans-serif; color: #4b116f; font-weight: normal; text-decoration: none; padding: 2px 3px 4px 3px;">Web</a>

</td> <td style="border-top: solid 1px #4b116f;

border-bottom: solid 1px #4b116f;">&nbsp;|&nbsp;</td> <td style="border-top: solid 1px #4b116f;

border-bottom: solid 1px #4b116f;"> <a onclick='if

(document.getElementById("q").value == "" || document.getElementById("q").value == " "){document.location.href="http://www.uni.edu/directory"} else {document.location.href="https://java.access.uni.edu/ed/faces/searchAll.jsp?lastName="+document.getElementById("q").value;}' href="#" style="font-size: 12px; font-family: Arial, helvetica, sans-serif; color: #4b116f;font-weight: normal; text-decoration: none; padding: 2px 3px 4px 3px;">Directory</a>

</td> </tr>

</table></div>

</td></tr>

</table>

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 23/30

PeopleSoft CAS Configuration <table border="0" cellpadding="0" cellspacing="0" width="950" align="center">

<tr><td style="height:15px;">&nbsp;</td></tr><tr><td>

<span style="font-weight:bold;"><p><hr noshade size="1">

<table width="100%"><tr>

<td width="22" valign="top"><img src="https://access.uni.edu/images/exclaim1.gif"></td>

<td valign="top"><b style="color: #FF0000; font-weight: bold;">Login Failure: An error occured while attempting to log you in.</b>

<br>If you need assistance please contact the Computer Consulting Center (CCC) at (319) 273-5555 or <a href="mailto:[email protected]">[email protected]</a>.

The CCC is located in Room 36 ITTC Building. Consultants are available to provide hands-on assistance daily Monday through Friday during University Business Hours.

</td></tr>

</table><hr noshade size=1>

</span></td></tr><tr><td style="height:15px;">&nbsp;</td></tr><tr><td>

<p><center>Maintained by Information Technology Services. <BR>Send comments or suggestions to the <A href="mailto:access-

[email protected]">Data Access Team</A>.<br>Last Updated: 03/09/2010 <BR>

</td></tr><tr><td><p align="center"><div align="center" class="style1">Copyright

&copy; University of Northern Iowa. All rights reserved. | <a href="http://www.uni.edu/policies/web-privacy-statement" >Privacy Statement</a> | <a href="http://www.uni.edu/policies/">Policies &amp; Procedures</a> </div></p></td></tr>

</table></body>

</HTML>

logout_ps.html<!--********************************************************************* Last Updated By: Chad Wittrock* Last Updated: 03/08/2010* Modifications:* 1.0 Logout page used to redirect user to logout on CAS after logging out of PeopleSoft ********************************************************************--><html><head>

<meta HTTP-EQUIV='Refresh' CONTENT='1; URL=https://castest.uni.edu/cas/logout'></head></html>

expire.html<html dir=<%=direction%> lang=<%=language%>><HEAD> <TITLE><%=125%></TITLE><!--* **************************************************************** This software and related documentation are provided under a* license agreement containing restrictions on use and* disclosure and are protected by intellectual property

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 24/30

PeopleSoft CAS Configuration * laws. Except as expressly permitted in your license agreement* or allowed by law, you may not use, copy, reproduce,* translate, broadcast, modify, license, transmit, distribute,* exhibit, perform, publish or display any part, in any form or* by any means. Reverse engineering, disassembly, or* decompilation of this software, unless required by law for* interoperability, is prohibited.* The information contained herein is subject to change without* notice and is not warranted to be error-free. If you find any* errors, please report them to us in writing.** Copyright (C) 1988, 2009, Oracle and/or its affiliates.* All Rights Reserved.* ***************************************************************--><!--*-->

<link href="<%=psCtxPath%><%=psHome%>/styles.css" rel="stylesheet" type="text/css"><style type="text/css"><!--a:link { color: #4b116f;}a:visited { color: #4b116f;}a:hover { color: #4b116f;}a:active { color: #4b116f;}body { margin-left: 0px; margin-top: 0px; margin-right: 0px; margin-bottom: 0px;}--></style><script LANGUAGE="JavaScript"><!--Break out of framesif (top.frames.length!=0)top.location=self.document.location;//--><!--function convertToMinutes( sessionTimeout ) { if (sessionTimeout<60) { document.write(" < 1 "); } else { document.write(Math.round(sessionTimeout / 60)); }}//-->

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 25/30

PeopleSoft CAS Configuration </script></HEAD><BODY onload="<%=framebreak%>">

<!-------------------------------------------------------------------------------------------------------------------------------------->

<!-- 04/15/2010 CMW Code added to display a watermark in the header

-->

<!-------------------------------------------------------------------------------------------------------------------------------------->

<div style='position:absolute; left: 0px; top:1px; width:100%; text-align: center;' id="watermarklogo">&nbsp;</div>

<script>// Determine the server name

var serverName = ""; var docLoc=new String(document.location);

if (docLoc.indexOf("prtdev") > 0 || docLoc.indexOf("cssdev") > 0 || docLoc.indexOf("crmdev") > 0) {

if (docLoc.indexOf("prtdev") > 0) { serverName = "PRTDEV"; } else if (docLoc.indexOf("cssdev") > 0) { serverName = "CSSDEV"; } else if (docLoc.indexOf("crmdev") > 0) { serverName = "CRMDEV"; }

} else if (docLoc.indexOf("prtdmo") > 0 || docLoc.indexOf("cssdmo") > 0 || docLoc.indexOf("crmdmo") > 0) {

if (docLoc.indexOf("prtdmo") > 0) { serverName = "PRTDMO"; } else if (docLoc.indexOf("cssdmo") > 0) { serverName = "CSSDMO"; } else if (docLoc.indexOf("crmdmo") > 0) { serverName = "CRMDMO"; }

} else if (docLoc.indexOf("prttst") > 0 || docLoc.indexOf("csstst") > 0 || docLoc.indexOf("crmtst") > 0) {

if (docLoc.indexOf("prttst") > 0) { serverName = "PRTTST"; } else if (docLoc.indexOf("csstst") > 0) { serverName = "CSSTST"; } else if (docLoc.indexOf("crmtst") > 0) { serverName = "CRMTST"; }

} else if (docLoc.indexOf("prtsys") > 0 || docLoc.indexOf("csssys") > 0 || docLoc.indexOf("crmsys") > 0) {

if (docLoc.indexOf("prtsys") > 0) {

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 26/30

PeopleSoft CAS Configuration serverName = "PRTSYS"; } else if (docLoc.indexOf("csssys") > 0) { serverName = "CSSSYS"; } else if (docLoc.indexOf("crmsys") > 0) { serverName = "CRMSYS"; }

} else if (docLoc.indexOf("prtstg") > 0 || docLoc.indexOf("cssstg") > 0 || docLoc.indexOf("crmstg") > 0) {

if (docLoc.indexOf("prtstg") > 0) { serverName = "PRTSTG"; } else if (docLoc.indexOf("cssstg") > 0) { serverName = "CSSSTG"; } else if (docLoc.indexOf("crmstg") > 0) { serverName = "CRMSTG"; }

} else { // Default to PRD (no watermark) serverName = ""; }

var ie=document.all&&navigator.userAgent.indexOf("Opera")==-1

// Get watermarklogo div objectvar watermark_obj=ie? document.all.watermarklogo : document.getElementById?

document.getElementById("watermarklogo") : document.watermarklogo

function insertWaterMark(){if (serverName != ""){

if (ie||document.getElementById)watermark_obj.innerHTML='<b style="color:#FF0000; font-

size:18pt; font-family:Arial, Helvetica, sans-serif; z-index:1000;">'+serverName+'</b>'else if (document.layers){

watermark_obj.document.write('<b style="color:#FF0000; font-size:18pt; font-family:Arial, Helvetica, sans-serif;z-index:1000;">'+serverName+'</b>')

watermark_obj.document.close()}

}}

function beingwatermark(){insertWaterMark()

}

if (ie||document.getElementById||document.layers){if (serverName!="")

window.onload=beingwatermark}

</script>

<!-------------------------------------------------------------------------------------------------------------------------------------->

<!-- Begin portalhead --><table width="100%" align="center" cellpadding="0" cellspacing="0" border="0"

style="padding: 0 0; margin: 0 auto; background-color: #4b116f;"><tr>

<td valign=top rowspan=2>

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 27/30

PeopleSoft CAS Configuration <a href="http://www.uni.edu/">

<img src="https://access.uni.edu/images/nameplate.png" alt="University of Northern Iowa" width="209" height="70" border="0" style="margin: 7px 10px 5px 10px;"/>

</a></td><td align=right valign=top>

<script language="JavaScript">function mouseOver(object) {

object.style.textDecoration = "underline";object.style.color = "#fc0";

}function mouseOut(object) {

object.style.textDecoration='none';object.style.color="#fff";

}</script>

<a href="http://myuniverse.uni.edu" style="font-family: Arial, helvetica, sans-serif; font-size: 9pt; font-weight: normal; color: #fff; text-align: right; padding: .5px 0px 0px 0px; margin: 0px 0px 0px 0px;text-decoration: none; padding: 0px 0px 0px 0px; margin: 0px 6px 0px 6px;" onmouseover="mouseOver(this)" onmouseout="mouseOut(this)">MyUNIverse</a>

<font style="font-family: Arial, helvetica, sans-serif; font-size: 9pt; font-weight: normal; color: #fff; text-decoration: none;">|</font>

<a href="http://www.uni.edu/email/" style="font-family: Arial, helvetica, sans-serif; font-size: 9pt; font-weight: normal; color: #fff; text-align: right; padding: .5px 0px 0px 0px; margin: 0px 0px 0px 0px;text-decoration: none; padding: 0px 0px 0px 0px; margin: 0px 6px 0px 6px;" onmouseover="mouseOver(this)" onmouseout="mouseOut(this)">E-Mail</a>

<font style="font-family: Arial, helvetica, sans-serif; font-size: 9pt; font-weight: normal; color: #fff; text-decoration: none;">|</font>

<a href="http://elearning.uni.edu/" style="font-family: Arial, helvetica, sans-serif; font-size: 9pt; font-weight: normal; color: #fff; text-align: right; padding: .5px 0px 0px 0px; margin: 0px 0px 0px 0px;text-decoration: none; padding: 0px 0px 0px 0px; margin: 0px 6px 0px 6px;" onmouseover="mouseOver(this)" onmouseout="mouseOut(this)">eLearning</a>

<font style="font-family: Arial, helvetica, sans-serif; font-size: 9pt; font-weight: normal; color: #fff; text-decoration: none;">|</font>

<a href="http://www.uni.edu/infosys/siteindex.shtml" style="font-family: Arial, helvetica, sans-serif; font-size: 9pt; font-weight: normal; color: #fff; text-align: right; padding: .5px 0px 0px 0px; margin: 0px 0px 0px 0px;text-decoration: none; padding: 0px 0px 0px 0px; margin: 0px 6px 0px 6px;" onmouseover="mouseOver(this)" onmouseout="mouseOut(this)">A-Z Index</a>

<font style="font-family: Arial, helvetica, sans-serif; font-size: 9pt; font-weight: normal; color: #fff; text-decoration: none;">|</font>

<a href="https://access.uni.edu/acal/" style="font-family: Arial, helvetica, sans-serif; font-size: 9pt; font-weight: normal; color: #fff; text-align: right; padding: .5px 0px 0px 0px; margin: 0px 0px 0px 0px;text-decoration: none; padding: 0px 0px 0px 0px; margin: 0px 6px 0px 6px;" onmouseover="mouseOver(this)" onmouseout="mouseOut(this)">Calendar</a>

<font style="font-family: Arial, helvetica, sans-serif; font-size: 9pt; font-weight: normal; color: #fff; text-decoration: none;">|</font>

<a href="http://www.uni.edu/directory" style="font-family: Arial, helvetica, sans-serif; font-size: 9pt; font-weight: normal; color: #fff; text-align: right; padding: .5px 0px 0px 0px; margin: 0px 0px 0px 0px;text-decoration: none; padding: 0px 0px 0px 0px; margin: 0px 6px 0px 6px;" onmouseover="mouseOver(this)" onmouseout="mouseOut(this)">Directory</a>

</td>

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 28/30

PeopleSoft CAS Configuration </tr><tr>

<td align=right valign=bottom><div style="margin-bottom: 4px; margin-right: 4px;">

<table border=0 cellpadding=0 cellspacing=0> <tr style="background-color:#fc0;"> <td style="background-color:#4b116f;"><input type="text"

value="Search..." onFocus="this.value='';" onkeypress='e = event || window.event; if (e) {if (e.keyCode == 13) {document.location.href="http://www.uni.edu/search/?cx=011098738754097199461:oywhsfqqr2s&cof=FORID:9&submit=Search UNI&q="+document.getElementById("q").value;}}' name="q" id="q" size="14"/>&nbsp;</td>

<td style="border-top: solid 1px #4b116f; border-bottom: solid 1px #4b116f;">

<a onclick='if (document.getElementById("q").value == "" || document.getElementById("q").value == " "){document.location.href="http://www.uni.edu/search";} else {document.location.href="http://www.uni.edu/search/?cx=011098738754097199461:oywhsfqqr2s&cof=FORID:9&submit=Search UNI&q="+document.getElementById("q").value;}' href="#" style="font-size: 12px; font-family: Arial, helvetica, sans-serif; color: #4b116f; font-weight: normal; text-decoration: none; padding: 2px 3px 4px 3px;">Web</a>

</td> <td style="border-top: solid 1px #4b116f; border-bottom: solid 1px

#4b116f;">&nbsp;|&nbsp;</td> <td style="border-top: solid 1px #4b116f; border-bottom: solid 1px

#4b116f;"> <a onclick='if (document.getElementById("q").value == "" ||

document.getElementById("q").value == " "){document.location.href="http://www.uni.edu/directory"} else {document.location.href="https://java.access.uni.edu/ed/faces/searchAll.jsp?lastName="+document.getElementById("q").value;}' href="#" style="font-size: 12px; font-family: Arial, helvetica, sans-serif; color: #4b116f;font-weight: normal; text-decoration: none; padding: 2px 3px 4px 3px;">Directory</a>

</td> </tr> </table>

</div></td>

</tr></table>

<!-- End portalhead -->

<table width="100%" border="0" cellpadding="0" cellspacing="0"> <tr> <td height="250" align="center" valign="middle"> <form action="<%=servletLocEx%>?cmd=login&languageCd=<%=languageCd%>" method="post" id="login" name="login" autocomplete=off> <input type="hidden" name="httpPort" value="<%=httpPort%>"> <input type="hidden" name="timezoneOffset" value="0"> <TABLE width="500" border=0 cellPadding=0 cellSpacing=0> <tr><td width="600" align="center" valign="top" class="psloginmessagelarge"> <p>Your connection has expired.</p> <p class="psloginmessage">For increased security on this site, connections are expired after <script>convertToMinutes( <%=sessionTimeout%> );</script> minutes of inactivity. </p> <p class="psloginmessage">Your session has expired. Close all browser windows before logging in again. If this is your only active session, click the Sign In link to sign in again.

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 29/30

PeopleSoft CAS Configuration </p> <p class="textnormal"><a HREF="<%=servletLoc%>?cmd=login&languageCd=<%=languageCd%>"> Sign back in </a> </p> </td></tr> </TABLE> </td> </tr></table></BODY></HTML>

University of Northern Iowa 1227 West 27th Street Cedar Falls, IA 50614 Chad Wittrock, Systems Analyst ([email protected]) Last Updated: 5/6/2023 Page: 30/30