WAYF now passes through providerId parameter sent by 1.2 + targets and; in the case...
authorwassa <wassa@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Tue, 13 Apr 2004 04:33:00 +0000 (04:33 +0000)
committerwassa <wassa@ab3bd59b-922f-494d-bb5f-6f0a3c29deca>
Tue, 13 Apr 2004 04:33:00 +0000 (04:33 +0000)
git-svn-id: https://subversion.switch.ch/svn/shibboleth/java-idp/trunk@970 ab3bd59b-922f-494d-bb5f-6f0a3c29deca

src/edu/internet2/middleware/shibboleth/wayf/WayfService.java
webApplication/wayf.jsp

index e89cbed..edaa5d7 100755 (executable)
@@ -52,6 +52,7 @@ package edu.internet2.middleware.shibboleth.wayf;
 import java.io.IOException;
 import java.io.InputStream;
 import java.net.URLEncoder;
+import java.util.Date;
 
 import javax.servlet.RequestDispatcher;
 import javax.servlet.ServletException;
@@ -231,8 +232,11 @@ public class WayfService extends HttpServlet {
                        }
                        req.setAttribute("shire", getSHIRE(req));
                        req.setAttribute("target", getTarget(req));
-                       req.setAttribute("encodedShire", URLEncoder.encode(getSHIRE(req), "UTF-8"));
-                       req.setAttribute("encodedTarget", URLEncoder.encode(getTarget(req), "UTF-8"));
+                       String providerId = getProviderId(req);
+                       if (providerId != null) {
+                               req.setAttribute("providerId", providerId);
+                               req.setAttribute("time", new Long(new Date().getTime() / 1000).toString()); // Unix Time
+                       }
                        req.setAttribute("requestURL", req.getRequestURI().toString());
 
                        log.debug("Displaying WAYF selection page.");
@@ -287,16 +291,17 @@ public class WayfService extends HttpServlet {
        private void forwardToHS(HttpServletRequest req, HttpServletResponse res, String handleService)
                throws WayfException {
 
-               String shire = getSHIRE(req);
-               String target = getTarget(req);
                log.info("Redirecting to selected Handle Service");
                try {
-                       res.sendRedirect(
-                               handleService
-                                       + "?target="
-                                       + URLEncoder.encode(target, "UTF-8")
-                                       + "&shire="
-                                       + URLEncoder.encode(shire, "UTF-8"));
+                       StringBuffer buffer = new StringBuffer(handleService + "?target="
+                                       + URLEncoder.encode(getTarget(req), "UTF-8") + "&shire="
+                                       + URLEncoder.encode(getSHIRE(req), "UTF-8"));
+                       String providerId = getProviderId(req);
+                       if (providerId != null) {
+                               buffer.append("&providerId=" + URLEncoder.encode(getProviderId(req), "UTF-8"));
+                               buffer.append("&time=" + new Long(new Date().getTime() / 1000).toString()); // Unix Time
+                       }
+                       res.sendRedirect(buffer.toString());
                } catch (IOException ioe) {
                        throw new WayfException("Error forwarding to HS: " + ioe.toString());
                }
@@ -354,6 +359,14 @@ public class WayfService extends HttpServlet {
                }
                return target;
        }
+       
+       private String getProviderId(HttpServletRequest req) {
+               if (req.getParameter("providerId") != null) {
+                       return req.getParameter("providerId");
+               } else {
+                       return (String) req.getAttribute("providerId");
+               }
+       }
 
        private WayfOrigins getOrigins() {
                synchronized (originConfig) {
index 6bcb9cc..c5d0557 100755 (executable)
@@ -9,8 +9,8 @@
        <jsp:useBean id="supportContact" scope="application" class="java.lang.String"/>
        <jsp:useBean id="shire" scope="request" class="java.lang.String"/>
        <jsp:useBean id="target" scope="request" class="java.lang.String"/>
-       <jsp:useBean id="encodedShire" scope="request" class="java.lang.String"/>
-       <jsp:useBean id="encodedTarget" scope="request" class="java.lang.String"/>
+       <jsp:useBean id="providerId" scope="request" class="java.lang.String"/>
+       <jsp:useBean id="time" scope="request" class="java.lang.String"/>
        <jsp:useBean id="searchResultEmptyText" scope="application" class="java.lang.String"/>
        <jsp:useBean id="logoLocation" scope="application" class="java.lang.String"/>
        <logic:present name="searchresults" scope="request">
                                        <p>
                                        <input type="hidden" name="shire" value="<bean:write name="shire" />" />
                                        <input type="hidden" name="target" value="<bean:write name="target" />" />
+                                       <logic:present name="providerId" scope="request">
+                                               <input type="hidden" name="providerId" value="<bean:write name="providerId" />" />
+                                       </logic:present>
+                                       <logic:present name="time" scope="request">
+                                               <input type="hidden" name="time" value="<bean:write name="time" />" />
+                                       </logic:present>
                                        <input type="hidden" name="action" value="selection" />
                                        <select name="origin">  
                                                <logic:iterate id="origin" name="originset" property="origins">
                                                <p>
                                                        <input type="hidden" name="shire" value="<bean:write name="shire" />" />
                                                        <input type="hidden" name="target" value="<bean:write name="target" />" />
+                                                       <logic:present name="providerId" scope="request">
+                                                               <input type="hidden" name="providerId" value="<bean:write name="providerId" />" />
+                                                       </logic:present>
+                                                       <logic:present name="time" scope="request">
+                                                               <input type="hidden" name="time" value="<bean:write name="time" />" />
+                                                       </logic:present>
                                                        <input type="hidden" name="action" value="search" />
                                                        <input type="text" name="string" />
                                                        <input type="submit" value="Search" />
                                                        <p>
                                                                <input type="hidden" name="shire" value="<bean:write name="shire" />" />
                                                                <input type="hidden" name="target" value="<bean:write name="target" />" />
+                                                               <logic:present name="providerId" scope="request">
+                                                                       <input type="hidden" name="providerId" value="<bean:write name="providerId" />" />
+                                                               </logic:present>
+                                                               <logic:present name="time" scope="request">
+                                                                       <input type="hidden" name="time" value="<bean:write name="time" />" />
+                                                               </logic:present>
                                                                <input type="hidden" name="action" value="selection" />
                                                                <input type="submit" value="Select" />
                                                                <input type="checkbox" checked="checked" name="cache" value="TRUE" /><span class="warning">Remember my selection on this computer.</span>