cleanup, add checks to arguments and responses, add log statements
[java-idp.git] / src / edu / internet2 / middleware / shibboleth / serviceprovider / FilterSupportImpl.java
index 43df9b3..7b9e8af 100644 (file)
@@ -1,29 +1,38 @@
 /*
+ * Copyright [2005] [University Corporation for Advanced Internet Development, Inc.]
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+/*
  * FilterSupportImpl.java
  * 
  * Provide access to the Filter to configuration information
  * and Session data.
- * 
- * --------------------
- * Copyright 2002, 2004 
- * University Corporation for Advanced Internet Development, Inc. 
- * All rights reserved
- * [Thats all we have to say to protect ourselves]
- * Your permission to use this code is governed by "The Shibboleth License".
- * A copy may be found at http://shibboleth.internet2.edu/license.html
- * [Nothing in copyright law requires license text in every file.]
  */
 package edu.internet2.middleware.shibboleth.serviceprovider;
 
 import java.util.Map;
 
+import javax.servlet.http.HttpServletRequest;
+
+import org.apache.log4j.Logger;
 import org.opensaml.SAMLException;
 
 import x0.maceShibbolethTargetConfig1.SessionsDocument.Sessions;
 
-import edu.internet2.middleware.shibboleth.common.AAP;
-import edu.internet2.middleware.shibboleth.common.AttributeRule;
-import edu.internet2.middleware.shibboleth.metadata.MetadataException;
+import edu.internet2.middleware.shibboleth.aap.AAP;
+import edu.internet2.middleware.shibboleth.aap.AttributeRule;
 import edu.internet2.middleware.shibboleth.resource.FilterSupport;
 import edu.internet2.middleware.shibboleth.serviceprovider.ServiceProviderConfig.ApplicationInfo;
 
@@ -34,7 +43,8 @@ import edu.internet2.middleware.shibboleth.serviceprovider.ServiceProviderConfig
  */
 public class FilterSupportImpl implements FilterSupport {
     
-    public static ServiceProviderContext context = ServiceProviderContext.getInstance();
+    private static ServiceProviderContext context = ServiceProviderContext.getInstance();
+    private static Logger log = Logger.getLogger(ContextListener.SHIBBOLETH_SERVICE);
 
     /**
      * Given a Resource URL, go to the RequestMap logic to find an applicationId.
@@ -62,7 +72,7 @@ public class FilterSupportImpl implements FilterSupport {
     }
     
     /**
-     * Get the URL of the local AuthenticationAssertionConsumerServlet.
+     * Get the URL of the local AssertionConsumerServlet.
      * 
      * @param applicationId
      * @return URL string
@@ -94,10 +104,8 @@ public class FilterSupportImpl implements FilterSupport {
         * @return     true if Shibboleth is required
         */
        public boolean isProtected(String url) {
-           // TODO Add some real logic. This is just a placeholder
-           if (url.endsWith("test.txt"))
-               return true;
-           return false;
+               //TODO: get info from requestmap
+           return true;
        }
 
        /**
@@ -140,7 +148,7 @@ public class FilterSupportImpl implements FilterSupport {
 
     /**
      * @param ipaddr
-     * @param bin64Assertion
+     * @param request
      * @param applicationId
      * @param shireURL
      * @param providerId
@@ -148,19 +156,20 @@ public class FilterSupportImpl implements FilterSupport {
      */
     public String createSessionFromPost(
             String ipaddr, 
-            byte[] bin64Assertion, 
+            HttpServletRequest request, 
             String applicationId, 
             String shireURL, 
-            String providerId) {
+            String providerId,
+            String emptySessionId) {
         String sessionid;
         try {
-            sessionid = AuthenticationAssertionConsumerServlet.createSessionFromPost(
-                    ipaddr, bin64Assertion, applicationId, shireURL, providerId);
+            sessionid = AssertionConsumerServlet.createSessionFromPost(
+                    ipaddr, request, applicationId, shireURL, providerId,emptySessionId);
         } catch (SAMLException e) {
-            return null;
-        } catch (MetadataException e) {
+               log.error("Invalid POST data submitted by RM "+e);
             return null;
         }
+        log.info("Session created from POST submitted by RM: "+sessionid);
         return sessionid;
     }
 
@@ -171,4 +180,16 @@ public class FilterSupportImpl implements FilterSupport {
         Sessions appSessionValues = appinfo.getApplicationConfig().getSessions();
         return appSessionValues.getShireSSL();
     }
+
+    /**
+     * Create empty Session so SessionID can be written as a Cookie
+     * before redirecting the Browser to the IDP.
+     * 
+     * @param applicationId
+     * @return SessionId of empty session
+     */
+    public String createSession(String applicationId) {
+        String id = context.getSessionManager().reserveSession(applicationId);
+        return id;
+    }
 }