You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jetspeed-dev@portals.apache.org by ta...@apache.org on 2004/11/26 19:56:34 UTC

cvs commit: jakarta-jetspeed-2/components/web-content project.xml

taylor      2004/11/26 10:56:34

  Modified:    components/web-content/src/java/org/apache/jetspeed/portlet
                        IFrameGenericPortlet.java
               components/web-content project.xml
  Added:       components/web-content/src/java/org/apache/jetspeed/portlet
                        SSOIFramePortlet.java
  Log:
  Starting SSO Portlet implementation: SSOIFramePortlet
  The SSOIFramePortlet will support all SSO authentication methods
  Here we are starting on request parameter (and base64 request parameter) authentication
  
  Revision  Changes    Path
  1.4       +24 -11    jakarta-jetspeed-2/components/web-content/src/java/org/apache/jetspeed/portlet/IFrameGenericPortlet.java
  
  Index: IFrameGenericPortlet.java
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/components/web-content/src/java/org/apache/jetspeed/portlet/IFrameGenericPortlet.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- IFrameGenericPortlet.java	15 Nov 2004 05:58:10 -0000	1.3
  +++ IFrameGenericPortlet.java	26 Nov 2004 18:56:34 -0000	1.4
  @@ -38,6 +38,7 @@
    */
   public class IFrameGenericPortlet extends GenericVelocityPortlet
   {
  +
       private Map attributes = new HashMap();
   
       private Map maxAttributes = new HashMap();
  @@ -83,12 +84,12 @@
       private void appendAttribute(PortletPreferences prefs, StringBuffer content, String attribute, Map map)
       {
           String value;
  -        
  +
           if (map == maxAttributes)
               value = getMaxAttributePreference(prefs, attribute);
           else
               value = getAttributePreference(prefs, attribute);
  -        
  +
           if (value == null || value == "") { return; }
           content.append(" ").append(attribute).append("=\"").append(value).append("\"");
       }
  @@ -110,19 +111,24 @@
   
       public void doEdit(RenderRequest request, RenderResponse response) throws PortletException, IOException
       {
  -        response.setContentType("text/html");        
  -        doPreferencesEdit(request, response);        
  +        response.setContentType("text/html");
  +        doPreferencesEdit(request, response);
       }
  -    
  +
       /**
        * Render IFRAME content
        */
       protected void doIFrame(RenderRequest request, RenderResponse response) throws IOException
       {
           PortletPreferences prefs = request.getPreferences();
  +        String source = getURLSource(request, prefs);
           // generate HTML IFRAME content
           StringBuffer content = new StringBuffer(4096);
           content.append("<IFRAME");
  +
  +        // special case source
  +        content.append(" ").append("SRC").append("=\"").append(source).append("\"");
  +
           appendAttribute(prefs, content, "SRC");
           appendAttribute(prefs, content, "ALIGN");
           appendAttribute(prefs, content, "CLASS");
  @@ -146,8 +152,8 @@
               appendAttribute(prefs, content, "STYLE");
           }
           content.append(">");
  -        content.append("<P STYLE=\"textAlign:center\"><A HREF=\"").append(getAttributePreference(prefs, "SRC")).append(
  -                "\">").append(getAttributePreference(prefs, "SRC")).append("</A></P>");
  +        content.append("<P STYLE=\"textAlign:center\"><A HREF=\"").append(source).append("\">").append(source).append(
  +                "</A></P>");
           content.append("</IFRAME>");
   
           // set required content type and write HTML IFRAME content
  @@ -155,13 +161,20 @@
           response.getWriter().print(content.toString());
       }
   
  +    public String getURLSource(RenderRequest request, PortletPreferences prefs)
  +    {
  +        String source = getAttributePreference(prefs, "SRC");
  +        if (source == null) source = "";
  +        return source;
  +    }
  +
       /**
        * Save the prefs
        */
  -    public void processAction(ActionRequest request, ActionResponse actionResponse)
  -    throws PortletException, IOException
  +    public void processAction(ActionRequest request, ActionResponse actionResponse) throws PortletException,
  +            IOException
       {
           processPreferencesAction(request, actionResponse);
       }
  -    
  +
   }
  
  
  
  1.1                  jakarta-jetspeed-2/components/web-content/src/java/org/apache/jetspeed/portlet/SSOIFramePortlet.java
  
  Index: SSOIFramePortlet.java
  ===================================================================
  /*
   * Copyright 2000-2004 The Apache Software Foundation.
   * 
   * 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.
   */
  package org.apache.jetspeed.portlet;
  
  import java.security.AccessControlContext;
  import java.security.AccessController;
  import javax.security.auth.Subject;
  
  import javax.portlet.PortletConfig;
  import javax.portlet.PortletContext;
  import javax.portlet.PortletException;
  import javax.portlet.PortletPreferences;
  import javax.portlet.RenderRequest;
  
  import org.apache.jetspeed.sso.SSOProvider;
  
  
  /**
   * SSOIFramePortlet
   * 
   * @author <a href="mailto:taylor@apache.org">David Sean Taylor</a>
   * @version $Id: SSOIFramePortlet.java,v 1.1 2004/11/26 18:56:34 taylor Exp $
   */
  public class SSOIFramePortlet extends IFrameGenericPortlet
  {
      public static final String SSO_TYPE = "sso.type";
      public static final String SSO_TYPE_URL = "url";
      public static final String SSO_TYPE_URL_BASE64 = "url.base64";
      public static final String SSO_TYPE_HTTP = "http";
      public static final String SSO_TYPE_CERTIFICATE = "certificate";
      
      public static final String SSO_TYPE_URL_USERNAME = "sso.url.param.username";
      public static final String SSO_TYPE_URL_PASSWORD = "sso.url.param.password";
      
  
      private PortletContext context;
      private SSOProvider sso;
  
      public void init(PortletConfig config) throws PortletException
      {
          super.init(config);
          context = getPortletContext();
          sso = (SSOProvider)context.getAttribute("cps:SSO");
          if (null == sso)
          {
             throw new PortletException("Failed to find SSO Provider on portlet initialization");
          }        
      }
          
      public String getURLSource(RenderRequest request, PortletPreferences prefs)
      {
          String baseSource = super.getURLSource(request, prefs);
          String type = prefs.getValue(SSO_TYPE, SSO_TYPE_URL);
          if (type.equals(SSO_TYPE_URL))
          {
              String userNameParam = prefs.getValue("sso.url.param.username", "");
              String passwordParam = prefs.getValue("sso.url.param.password", "");
              StringBuffer source = new StringBuffer(baseSource);
              if (baseSource.indexOf("?") == -1)
              {
                  source.append("?");
              }            
              else
              {
                  source.append("&");
              }
              AccessControlContext context = AccessController.getContext();
              Subject subject = Subject.getSubject(context); 
              System.out.println("GOT A SUBJECT " + subject);
              source.append(userNameParam);
              source.append("=");
              
              // LEFT OFF HERE: get credentials from subject, and pass into SSO component
              
              source.append("joey");
              source.append("&");
              source.append(passwordParam);
              source.append("=");
              source.append("joeys-password");
              return source.toString();
          }
          else
          {
              return baseSource;
          }
      }
      
      
      
  }
  
  
  
  1.5       +4 -0      jakarta-jetspeed-2/components/web-content/project.xml
  
  Index: project.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-jetspeed-2/components/web-content/project.xml,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- project.xml	12 Nov 2004 06:30:40 -0000	1.4
  +++ project.xml	26 Nov 2004 18:56:34 -0000	1.5
  @@ -43,6 +43,10 @@
         <id>jetspeed2:jetspeed-commons</id>
         <version>2.0-a1-dev</version>
       </dependency>
  +   	<dependency>
  +      <id>jetspeed2:jetspeed-api</id>
  +      <version>2.0-a1-dev</version>
  +    </dependency>	
       <dependency>
         <id>commons-httpclient</id>
         <version>2.0</version>
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org