diff options
Diffstat (limited to 'src/main/webapp/wayf.jsp')
-rwxr-xr-x | src/main/webapp/wayf.jsp | 648 |
1 files changed, 0 insertions, 648 deletions
diff --git a/src/main/webapp/wayf.jsp b/src/main/webapp/wayf.jsp deleted file mode 100755 index 12d72da..0000000 --- a/src/main/webapp/wayf.jsp +++ /dev/null @@ -1,648 +0,0 @@ -<?xml version="1.0" encoding="utf-8"?> -<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" - "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> -<%@ page contentType="text/html;charset=UTF-8" %> -<%@ page language="java" import="java.util.*,edu.internet2.middleware.shibboleth.wayf.*,java.lang.*" %> -<html> - -<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %> -<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %> - -<%request.setCharacterEncoding("UTF-8");%> -<%response.setCharacterEncoding("UTF-8");%> - -<logic:present name="showComments" scope="Request"> - -<!-- TO CONFIGURE THIS FOR A SPECIFIC SITE - ===================================== - - Before you deploy this jsp you need to look for CONFIG below. - These mark places where you should make changes. - - If you want to make more profound changes but only to the jsp, - you should read the sections marked PROGRAMMING NOTE below.--> - -<!-- PROGRAMMING NOTE - - "requestURL" contains the URL that was specified to get the - WAYF going. The jsp uses it mostly for submitting result back to - the WAYF and error reporting --> - -</logic:present> - - <jsp:useBean id="requestURL" scope="request" class="java.lang.String"/> - -<logic:present name="showComments" scope="Request"> - -<!-- PROGRAMMING NOTE - - shire, target, provider and time are all part of the Shibboleth - 1.3 discovery protocol and need to be specified as parameters to the WAYF - - entityID, return, returnIDParam are all part of the - SAML Discovery protocol. - - ---> -</logic:present> - -<logic:notPresent name="entityID" scope="request"> -<logic:notPresent name="shire" scope="request"> - -<jsp:forward page = "wayferror.jsp"/> -</logic:notPresent> -</logic:notPresent> - - -<logic:present name="showComments" scope="Request"> - -<!-- PROGRAMMING NOTE - In addition to the above. The WAYF may also supply the following to - the jsp. - - "cookieList" If this exists it represents the contents of the - _saml_idp cookie (possibly filtered to remove IdPs which - cannot serve the SP). It is a Collection of IdPSite objects, - which themselves have the following properties: - - "name" The uri for the IdP, which needs to be returned to the - WAYF in the "origin" parameter. - - "displayName" User friendly name (taken from its alias) - - "addressFor" The (ungarnished) URL for the IdP. This could be - used to create a direct hyperlink to the IdP - - "sites" If this exists it contains all the possible IdPs for for - the SP (possibly filtered). It is a Collection of IdPSite - Objects which are described above. This is only present if - provideList was defined true in the configuration. - - "siteLists" If this exists it contains all the possible metadata - files which can service for the SP (possibly filtered). It - is a collection of IdPSiteSetEntry Objects which have two - properties: - - "name" This is the displayName from the Metadata element in - the WAYF configuration file - - "sites" This represents the IdPs. Again it is a collection - of IdPSite Objects - - It is only present if provideListOfList was defined true in - the configuration. - - "singleSiteList" if this is present, then there is only one - IdPSiteSetEntry Object in "siteLists". - - "searchresultempty" If this is present then it means that a - search was performed, but no suitable IdPs were returned. - - "searchresults" If this is present it represents the list of IdPs - which matched a previous search. It is a Collection of - IdPSite Objects. --> - -<!-- PROGRAMMING NOTE - - The jsp communicates back to the WAYF via the parameters listed - above, and: - - "action" what the WAYF has to do. Possible contents are: - - "lookup" - refresh the screen. - "search" - perform a search on the contents parameter "string" - "selection" - redirect to the IdP with the uri "origin" - - "cache" preserve any selection in the _saml_idp cookie. A - value of "session" makes the cookie last for the browser - session, "perm" gives it the lifetime specified in the - configuration file. - - The tabindex is hard wired. Fortunately the standard allows us to - have duplicate numbers and says the order is the order things - get emitted. We use these numbers - - 10 - Recently used sites hyperlinks - 20 - <clear button for above> - 25 - AutoSuggestion - 30 Federation selection - 40 IdP within Selection - 50 Select button - 60 How long to remember selector - 70 Search entry - 80 Search Button - 90 List of search results - 100 Select search result - 110 How long to remember search results - 120 Hyperlink to admin user. - ---> - -</logic:present> - -<head> - <link rel="stylesheet" title="normal" type="text/css" - href="wayf.css" /> <title>Identity Provider Selection</title> - </head> - -<body> - <div class="head"> - <h1> - -Select an identity provider - - </h1> - </div> - - <div class="selector"> - <p class="text"> - -<!--CONFIG--> - -The Service you are trying to reach requires that you -authenticate with your home organization, enter the name below. - - </p> - <logic:present name="cookieList" scope="request"> - - <h2> - -Recently used organizations: - - </h2> - -<logic:present name="showComments" scope="Request"> - -<!-- PROGRAMMING NOTE - - Generate a hyperlink back to the WAYF. Note that we are - simulating the user having specified a permanent cookie --> - -</logic:present> - - <logic:iterate id="site" name="cookieList"> - <p class="text"> - <logic:present name="entityID" scope="request"> - - <bean:define id="returnIDParam" name="returnIDParam"/> - <bean:define id="ei" name="entityID" /> - <bean:define id="re" name="returnX"/> - - <a tabindex="10" href="<bean:write name="requestURL" />?entityID=<%= java.net.URLEncoder.encode(ei.toString(), "utf-8") %>&return=<%= java.net.URLEncoder.encode(re.toString(), "utf-8") %>&returnIDxParam=<%= java.net.URLEncoder.encode( returnIDParam.toString(), "utf-8" ) %>&cache=perm&action=selection&origin=<%=java.net.URLEncoder.encode(((IdPSite)site).getName())%> -"> - <jsp:getProperty name="site" property="displayName" /> - </a> - </logic:present> - <logic:notPresent name="entityID" scope="request"> - <bean:define id="targ" name="target" /> - <bean:define id="shire" name="shire" /> - <bean:define id="pid" name="providerId" /> - <a tabindex="10" href="<bean:write name="requestURL" />?target=<%= java.net.URLEncoder.encode(targ.toString(),"utf-8") %>&shire=<%= java.net.URLEncoder.encode(shire.toString(),"utf-8") %>&providerId=<%= java.net.URLEncoder.encode(pid.toString(),"utf-8") %>&time=<bean:write name="time" />&cache=perm&action=selection&origin=<%=java.net.URLEncoder.encode(((IdPSite)site).getName())%> - <jsp:getProperty name="site" - property="displayName" /> - </a> - </logic:notPresent> - </p> - </logic:iterate> - -<logic:present name="showComments" scope="Request"> - -<!-- PROGRAMMING NOTE - - We defined the ClearCache.Wayf service in wayfconfig. So we know - it is here. This will empty the cookie and loop --> - -</logic:present> - - <form method="get" action="ClearCache.wayf" > - <div> - <logic:notPresent name="entityID" scope="request"> - <input type="hidden" name="shire" value="<bean:write name="shire" />" /> - <input type="hidden" name="target" value="<bean:write name="target" />" /> - <input type="hidden" name="providerId" value="<bean:write name="providerId" />" /> - <logic:present name="time" scope="request"> - <input type="hidden" name="time" value="<bean:write name="time" />" /> - </logic:present> - </logic:notPresent> - <logic:present name="entityID" scope="request"> - <input type="hidden" name="entityID" value="<bean:write name="entityID" />" /> - <input type="hidden" name="returnX" value="<bean:write name="returnX" />" /> - <input type="hidden" name="returnIDParam" value="<bean:write name="returnIDParam" />" /> - </logic:present> - <input tabindex="20" type="submit" value="Clear" /> - </div> - </form> - - </logic:present> <!-- Previous Selections --> - -<logic:present name="showComments" scope="Request"> - -<!-- PROGRAMMING NOTE - - Add the "instant search" dialogue. - -</logic:present> - - <div class="list"> - <logic:present name="sites" scope="request"> - <h2> - Enter institution name: - </h2> - <form autocomplete="OFF" action=""> - <div> - <logic:notPresent name="entityID" scope="request"> - <input type="hidden" name="shire" value="<bean:write name="shire" />" /> - <input type="hidden" name="target" value="<bean:write name="target" />" /> - <input type="hidden" name="providerId" value="<bean:write name="providerId" />" /> - <logic:present name="time" scope="request"> - <input type="hidden" name="time" value="<bean:write name="time" />" /> - </logic:present> - </logic:notPresent> - <logic:present name="entityID" scope="request"> - <input type="hidden" name="entityID" value="<bean:write name="entityID" />" /> - <input type="hidden" name="returnX" value="<bean:write name="returnX" />" /> - <input type="hidden" name="returnIDParam" value="<bean:write name="returnIDParam" />" /> - </logic:present> - <input type="hidden" id="enterOrigin" name="origin" value="unspec" /> - <input type="hidden" id="enterType" name="action" value="search" /> - <input type="text" id="enterText" name="string" value="" tabindex="25" size="54"/> - <input type="submit" id="enterSubmit" value="Search"/> - <input type="hidden" name="cache" value="perm"/> - </div> - </form> - </logic:present> - - <h2> - -<logic:present name="showComments" scope="Request"> - -Provide a static drop down or a dynamically republished one. - you may wish to remove this code - -</logic:present> - -Or choose from a list: - - </h2> - - <logic:present name="sites" scope="request"> - <logic:notPresent name="siteLists" scope="request"> - - <form method="get" action="<bean:write name="requestURL" />"> - <div> - <logic:notPresent name="entityID" scope="request"> - <input type="hidden" name="shire" value="<bean:write name="shire" />" /> - <input type="hidden" name="target" value="<bean:write name="target" />" /> - <input type="hidden" name="providerId" value="<bean:write name="providerId" />" /> - <logic:present name="time" scope="request"> - <input type="hidden" name="time" value="<bean:write name="time" />" /> - </logic:present> - </logic:notPresent> - <logic:present name="entityID" scope="request"> - <input type="hidden" name="entityID" value="<bean:write name="entityID" />" /> - <input type="hidden" name="returnX" value="<bean:write name="returnX" />" /> - <input type="hidden" name="returnIDParam" value="<bean:write name="returnIDParam" />" /> - </logic:present> - <input type="hidden" name="action" value="selection" /> - <select name="origin" id="hackForie6" tabindex="40"> - <logic:iterate id="site" name="sites"> - <option value="<jsp:getProperty name="site" property="name" />"> - <jsp:getProperty name="site" property="displayName" /> - </option> - </logic:iterate> - </select> - <input type="submit" value="Select" tabindex="50" /> - <select name="cache" tabindex="60"> - <option value="false"> Do not remember</option> - <option value="session" selected="selected"> Remember for session</option> - <option value="perm"> Remember for a week</option> - </select> - </div> - </form> - </logic:notPresent> - </logic:present> - -<logic:present name="showComments" scope="Request"> - -<!-- PROGRAMMING NOTE - Build two tables side by side, one with the Federation names and 'ALL' (if apposite) - and the other will be dynamically populated with the members of that federation. - - This needs to work in the face of no javascript, so we initially populate the - Right hand list with all the IdPs. The first Selection in the Left hand Table will - shrink this list - - The 'lists of all IdPs' is derived from the one which java gives us (if it did) - otherwise it is derived by a double iteration through the List of Lists. This - makes for complicated looking code, but it's dead simple really. - - --> - -</logic:present> - - <logic:present name="siteLists" scope="request"> - <form method="get" action="<bean:write name="requestURL" />"> - <div> - <logic:notPresent name="entityID" scope="request"> - <input type="hidden" name="shire" value="<bean:write name="shire" />" /> - <input type="hidden" name="target" value="<bean:write name="target" />" /> - <input type="hidden" name="providerId" value="<bean:write name="providerId" />" /> - <logic:present name="time" scope="request"> - <input type="hidden" name="time" value="<bean:write name="time" />" /> - </logic:present> - </logic:notPresent> - <logic:present name="entityID" scope="request"> - <input type="hidden" name="entityID" value="<bean:write name="entityID" />" /> - <input type="hidden" name="returnX" value="<bean:write name="returnX" />" /> - <input type="hidden" name="returnIDParam" value="<bean:write name="returnIDParam" />" /> - </logic:present> - <table id="tab"> - <tr> - <th>Federation </th> - <th>organization</th> - </tr> - <tr><td> - <select name="FedSelector" size="10" id="FedSelect" tabindex="30" - onchange="changedFed(this.form.origin, - this.form.FedSelector[this.form.FedSelector.selectedIndex].value);"> - <logic:iterate id="siteset" name="siteLists"> - <logic:present name="singleSiteList" scope="request"> - - <!-- Only One site so select it --> - - <option value="<jsp:getProperty name="siteset" property="name"/>" selected="selected"> - <jsp:getProperty name="siteset" property="name"/> - </option> - </logic:present> - <logic:notPresent name="singleSiteList" scope="request"> - <option value="<jsp:getProperty name="siteset" property="name"/>"> - <jsp:getProperty name="siteset" property="name"/> - </option> - </logic:notPresent> - </logic:iterate> - <logic:notPresent name="singleSiteList" scope="request"> - - <!-- More than one site so select the 'All' --> - - <option value="ALL" selected="selected"> - All Sites - </option> - </logic:notPresent> - </select></td><td> - <input type="hidden" name="action" value="selection" /> - <select name="origin" size="10" id="originIdp" tabindex="40"> - <logic:present name="sites" scope="request"> - <logic:iterate id="site" name="sites"> - <option value="<jsp:getProperty name="site" property="name" />"> - <jsp:getProperty name="site" property="displayName" /> - </option> - </logic:iterate> - </logic:present> - - <logic:notPresent name="sites" scope="request"> - <logic:iterate id="siteset" name="siteLists"> - <logic:iterate id="site" name="siteset" property="sites"> - <option value="<jsp:getProperty name="site" property="name" />"> - <jsp:getProperty name="site" property="displayName" /> - </option> - </logic:iterate> - </logic:iterate> - </logic:notPresent> - </select> - </td></tr> - </table> - <p> - <input type="submit" value="Select" tabindex="50" /> - <select name="cache" tabindex="60" > - <option value="false"> Do not remember</option> - <option value="session" selected="selected"> Remember for session</option> - <option value="perm"> Remember for a week</option> - </select> - </p> - </div> - </form> - </logic:present> - </div> - - - <div class="search"> - -<logic:present name="showComments" scope="Request"> - -<!-- This is here for completeness - it shows the "old fashioned way" to do search --> - - <span class="option">or</span> - - <h2> - -Search by keyword: - - </h2> - - <form method="get" action="<bean:write name="requestURL" />"> - <div> - <p> - - <logic:notPresent name="entityID" scope="request"> - <input type="hidden" name="shire" value="<bean:write name="shire" />" /> - <input type="hidden" name="target" value="<bean:write name="target" />" /> - <input type="hidden" name="providerId" value="<bean:write name="providerId" />" /> - <logic:present name="time" scope="request"> - <input type="hidden" name="time" value="<bean:write name="time" />" /> - </logic:present> - </logic:notPresent> - <logic:present name="entityID" scope="request"> - <input type="hidden" name="entityID" value="<bean:write name="entityID" />" /> - <input type="hidden" name="returnX" value="<bean:write name="returnX" />" /> - <input type="hidden" name="returnIDParam" value="<bean:write name="returnIDParam" />" /> - </logic:present> - - <input type="hidden" name="action" value="search" /> - <input type="text" name="string" tabindex="70" /> - <input type="submit" value="Search" tabindex="80" /> - </p> - </div> - </form> - -<!-- The end of the old code. Below is where search results go --> - -</logic:present> - <logic:present name="searchResultsEmpty" scope="request"> - <p class="error"> - -No provider was found that matches your search criteria, please try again. - - </p> - </logic:present> - - <logic:present name="searchresults" scope="request"> - <h3> - -Search results: - - </h3> - <form method="get" action="<bean:write name="requestURL" />"> - <div> - <ul> - <logic:iterate id="currResult" name="searchresults"> - <li> - <input type="radio" name="origin" tabindex="90" value="<jsp:getProperty name="currResult" property="name" />" /> - <jsp:getProperty name="currResult" property="displayName" /> - </li> - </logic:iterate> - </ul> - <p> - <logic:notPresent name="entityID" scope="request"> - <input type="hidden" name="shire" value="<bean:write name="shire" />" /> - <input type="hidden" name="target" value="<bean:write name="target" />" /> - <input type="hidden" name="providerId" value="<bean:write name="providerId" />" /> - <logic:present name="time" scope="request"> - <input type="hidden" name="time" value="<bean:write name="time" />" /> - </logic:present> - </logic:notPresent> - <logic:present name="entityID" scope="request"> - <input type="hidden" name="entityID" value="<bean:write name="entityID" />" /> - <input type="hidden" name="returnX" value="<bean:write name="returnX" />" /> - <input type="hidden" name="returnIDParam" value="<bean:write name="returnIDParam" />" /> - </logic:present> - <input type="hidden" name="action" value="selection" /> - <input type="submit" value="Select" tabindex="100" /> - <select name="cache" tabindex="100" > - <option value="false"> Do not remember</option> - <option value="session" selected="selected"> Remember for session</option> - <option value="perm"> Remember for a week</option> - </select> - </p> - </div> - </form> - </logic:present> - </div> - </div> - - <div class="footer"> - <p class="text"> -<!--CONFIG--> -Need assistance? Send mail to <a tabindex="120" href="mailto:user@domain">administrator's name</a> with description. - </p> - <div class="logo"><img src="images/internet2.gif" alt="Internet2" /></div> - </div> - -<logic:present name="showComments" scope="Request"> - -<!--PROGRAMMING NOTE - - We need to program the on changed selector. Note that option.InnterText only - works on IE, options.remove doesn't work on Firefox, and that - options.add doesn't work on Safari. Hence the somewhat strange manipulations - to delete & populate the list of options. - - X is the select object for the right hand table - Selected is the name selected in the left hand table - ---> - -</logic:present> - -<logic:present name="siteLists" scope="request"> -<script language="javascript" type="text/javascript"> -<!-- - -function changedFed(X, Selected) { - - <logic:notPresent name="singleSiteList" scope="request"> - - while (X.length > 0) { - X.options[(X.length-1)] = null; - } - - - <logic:iterate id="siteset" name="siteLists"> - if (Selected == "<jsp:getProperty name="siteset" property="name"/>") { - var opt; - <logic:iterate id="site" name="siteset" property="sites"> - opt = new Option ("<jsp:getProperty name="site" property="displayName" />"); - X.options[X.length] = opt; - opt.value = "<jsp:getProperty name="site" property="name" />"; - </logic:iterate> - } - </logic:iterate> - - if (Selected == "ALL") { - var opt; - - <logic:present name="sites" scope="request"> - <logic:iterate id="site" name="sites"> - opt = new Option("<jsp:getProperty name="site" property="displayName" />"); - X.options[X.length] = opt; - opt.value = "<jsp:getProperty name="site" property="name" />"; - </logic:iterate> - </logic:present> - - <logic:notPresent name="sites" scope="request"> - <logic:iterate id="siteset" name="siteLists"> - <logic:iterate id="site" name="siteset" property="sites"> - opt = new Option ("<jsp:getProperty name="site" property="displayName" />"); - X.options[X.length] = opt; - opt.value = "<jsp:getProperty name="site" property="name" />"; - </logic:iterate> - </logic:iterate> - </logic:notPresent> - } - - </logic:notPresent> - -} ---> -</script> -</logic:present> - -<logic:present name="sites" scope="request"> - -<logic:present name="showComments" scope="Request"> - <!-- Load the autosuggest code. - - PROGRAMMING NOTE - the "ie6Hack" is to do with an issue in ie6 in which the - psuedo drop down floats below the real dropdown. The hack is that we jsut disable - the real drop down when the pseudo one is about. This can seem weird for some - layouts and so if you are not deploying against ie6 you can just send an - empty array. - --> -</logic:present> - <script language="javascript" type="text/javascript" src="Suggest.js"></script> - <script language="javascript" type="text/javascript"> -<!-- -window.onload = function() { - -<logic:notPresent name="siteLists" scope="request"> - var ie6Hack = [ document.getElementById("hackForie6")]; -</logic:notPresent> - -<logic:present name="siteLists" scope="request"> - var ie6Hack = [ document.getElementById("FedSelect"), document.getElementById("originIdp")]; -</logic:present> - var control = new TypeAheadControl(theElements, - document.getElementById("enterText"), - document.getElementById("enterOrigin"), - document.getElementById("enterSubmit"), - document.getElementById("enterType"), - ie6Hack); - - - document.getElementById("enterText").focus(); -} - - -var theElements = [ - <logic:iterate id="site" name="sites"> - ["<%= ((edu.internet2.middleware.shibboleth.wayf.IdPSite)site).getDisplayName().replace("\n","").toString() %>", - "<jsp:getProperty name="site" property="name" />"], - </logic:iterate> - ]; - ---> - </script> -</logic:present> - - -</body> -</html> - |