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 wo...@apache.org on 2009/09/29 16:16:06 UTC
svn commit: r819960 - in /portals/jetspeed-2/applications/j2-admin/trunk/src:
main/java/org/apache/jetspeed/portlets/sso/ main/webapp/WEB-INF/
main/webapp/WEB-INF/view/ main/webapp/examples/ test/ test/java/
test/java/org/ test/java/org/apache/ test/ja...
Author: woonsan
Date: Tue Sep 29 14:16:05 2009
New Revision: 819960
URL: http://svn.apache.org/viewvc?rev=819960&view=rev
Log:
JS2-1071: Adds best site url matching. Also adds basic/form-based authentication JSP examples inside j2-admin to be used in the example SSO Reverse Proxy IFrame portlets.
Added:
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/iframe-help.html (with props)
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/basicauth.jsp (with props)
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/basicauth_success.jsp (with props)
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/formauth.jsp (with props)
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/formauth_success.jsp (with props)
portals/jetspeed-2/applications/j2-admin/trunk/src/test/
portals/jetspeed-2/applications/j2-admin/trunk/src/test/java/
portals/jetspeed-2/applications/j2-admin/trunk/src/test/java/org/
portals/jetspeed-2/applications/j2-admin/trunk/src/test/java/org/apache/
portals/jetspeed-2/applications/j2-admin/trunk/src/test/java/org/apache/jetspeed/
portals/jetspeed-2/applications/j2-admin/trunk/src/test/java/org/apache/jetspeed/portlets/
portals/jetspeed-2/applications/j2-admin/trunk/src/test/java/org/apache/jetspeed/portlets/sso/
portals/jetspeed-2/applications/j2-admin/trunk/src/test/java/org/apache/jetspeed/portlets/sso/TestSSOSiteCredentialsProvider.java (with props)
portals/jetspeed-2/applications/j2-admin/trunk/src/test/resources/
portals/jetspeed-2/applications/j2-admin/trunk/src/test/resources/log4j.properties (with props)
Modified:
portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/DefaultSSOSiteCredentialsProviderImpl.java
portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/portlet.xml
Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/DefaultSSOSiteCredentialsProviderImpl.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/DefaultSSOSiteCredentialsProviderImpl.java?rev=819960&r1=819959&r2=819960&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/DefaultSSOSiteCredentialsProviderImpl.java (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/java/org/apache/jetspeed/portlets/sso/DefaultSSOSiteCredentialsProviderImpl.java Tue Sep 29 14:16:05 2009
@@ -19,11 +19,14 @@
import java.io.Serializable;
import java.net.URI;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
+import org.apache.commons.lang.StringUtils;
import org.apache.portals.applications.webcontent.proxy.SSOSiteCredentials;
import org.apache.portals.applications.webcontent.proxy.SSOSiteCredentialsProvider;
import org.slf4j.Logger;
@@ -35,7 +38,7 @@
private static Logger log = LoggerFactory.getLogger(DefaultSSOSiteCredentialsProviderImpl.class);
- public List<SSOSiteCredentials> getSSOCredentials(HttpServletRequest request, URI siteURI)
+ public List<SSOSiteCredentials> getSSOCredentials(HttpServletRequest request, String siteURL)
{
List<SSOSiteCredentials> ssoSiteCreds = new ArrayList<SSOSiteCredentials>();
HttpSession session = request.getSession(false);
@@ -49,11 +52,15 @@
if (ssoSiteCredsOfSubject != null)
{
+ URI siteURI = URI.create(siteURL);
+
for (SSOSiteCredentials ssoCreds : ssoSiteCredsOfSubject)
{
try
{
- if (ssoCreds.getHost().equals(siteURI.getHost()) && ssoCreds.getPort() == siteURI.getPort())
+ String siteBaseURL = ssoCreds.getBaseURL();
+
+ if (StringUtils.startsWith(siteURL, siteBaseURL) && ssoCreds.getHost().equals(siteURI.getHost()) && ssoCreds.getPort() == siteURI.getPort())
{
ssoSiteCreds.add(ssoCreds);
}
@@ -68,7 +75,46 @@
}
}
+ if (!ssoSiteCreds.isEmpty())
+ {
+ Collections.sort(ssoSiteCreds, new URLMatchDifferenceBasedComparator<SSOSiteCredentials>(siteURL));
+ }
+
return ssoSiteCreds;
}
-
+
+ private class URLMatchDifferenceBasedComparator<SSOCredentials> implements Comparator<SSOSiteCredentials>
+ {
+ private String siteURL;
+
+ private URLMatchDifferenceBasedComparator(String siteURL)
+ {
+ this.siteURL = siteURL;
+ }
+
+ public int compare(SSOSiteCredentials creds1, SSOSiteCredentials creds2)
+ {
+ int diff1 = StringUtils.indexOfDifference(siteURL, creds1.getBaseURL());
+ int diff2 = StringUtils.indexOfDifference(siteURL, creds2.getBaseURL());
+
+ if (diff1 == -1)
+ {
+ return -1;
+ }
+ else if (diff2 == -1)
+ {
+ return 1;
+ }
+ else if (diff1 > diff2)
+ {
+ return -1;
+ }
+ else if (diff1 < diff2)
+ {
+ return 1;
+ }
+
+ return 0;
+ }
+ }
}
Modified: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/portlet.xml
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/portlet.xml?rev=819960&r1=819959&r2=819960&view=diff
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/portlet.xml (original)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/portlet.xml Tue Sep 29 14:16:05 2009
@@ -1340,15 +1340,103 @@
<portlet-preferences>
<preference>
<name>SRC</name>
- <value>http://localhost:8080/manager/list</value>
+ <value>http://localhost:${serverPort}${contextPath}/examples/basicauth.jsp</value>
</preference>
<preference>
<name>PROXYREMOTEURL</name>
- <value>http://localhost:8080/</value>
+ <value>http://localhost:${serverPort}/</value>
</preference>
<preference>
<name>PROXYLOCALPATH</name>
- <value>rproxy/localhost/</value>
+ <value>${contextPath}/rproxy/localhost/</value>
+ </preference>
+ <preference>
+ <name>AUTORESIZE</name>
+ <value>true</value>
+ </preference>
+ <preference>
+ <name>VISITLASTPAGE</name>
+ <value>true</value>
+ </preference>
+ <!--
+ Don't specify a HEIGHT if you want a normal filled out layout
+ because percentage values result in the content not to be
+ displayed on IE6. Specific values are ok though.
+ -->
+ <preference>
+ <name>HEIGHT</name>
+ <value>300</value>
+ </preference>
+ <preference>
+ <name>WIDTH</name>
+ <value>100%</value>
+ </preference>
+ <preference>
+ <name>MAX-HEIGHT</name>
+ <value>800</value>
+ </preference>
+ <preference>
+ <name>MAX-WIDTH</name>
+ <value>100%</value>
+ </preference>
+ <preference>
+ <name>SCROLLING</name>
+ <value>AUTO</value>
+ </preference>
+ </portlet-preferences>
+ </portlet>
+
+ <portlet id="SSOFormBasedAuthReverseProxyIFramePortlet">
+ <description>Places an HTML IFrame with reverse proxied url
+ , with Jetspeed SSO enabled,
+ inside a portlet for easily
+ hosting other
+ web application within a
+ portlet. Sizes of both
+ normal and maximized
+ modes are configurable
+ in edit mode.</description>
+ <portlet-name>SSOFormBasedAuthReverseProxyIFramePortlet</portlet-name>
+ <display-name>SSO Form Based Authentication Reverse Proxy IFrame Portlet</display-name>
+ <portlet-class>
+ org.apache.jetspeed.portlets.sso.SSOReverseProxyIFramePortlet</portlet-class>
+ <init-param>
+ <name>EditPage</name>
+ <value>/WEB-INF/view/edit-prefs.vm</value>
+ </init-param>
+ <init-param>
+ <name>HelpPage</name>
+ <value>/WEB-INF/view/iframe-help.html</value>
+ </init-param>
+ <init-param>
+ <name>portlet-icon</name>
+ <value>applications-internet.png</value>
+ </init-param>
+ <expiration-cache>300</expiration-cache>
+ <supports>
+ <mime-type>text/html</mime-type>
+ <portlet-mode>EDIT</portlet-mode>
+ <portlet-mode>VIEW</portlet-mode>
+ <portlet-mode>HELP</portlet-mode>
+ </supports>
+ <supported-locale>en</supported-locale>
+ <portlet-info>
+ <title>SSOFormBasedAuthReverseProxyIFrame</title>
+ <short-title>SSOFormBasedAuthReverseProxyIFrame</short-title>
+ <keywords>tool,sso,form,auth,reverse,proxy,iframe,web,frame,content,host</keywords>
+ </portlet-info>
+ <portlet-preferences>
+ <preference>
+ <name>SRC</name>
+ <value>http://localhost:${serverPort}${contextPath}/examples/formauth.jsp</value>
+ </preference>
+ <preference>
+ <name>PROXYREMOTEURL</name>
+ <value>http://localhost:${serverPort}/</value>
+ </preference>
+ <preference>
+ <name>PROXYLOCALPATH</name>
+ <value>${contextPath}/rproxy/localhost/</value>
</preference>
<preference>
<name>AUTORESIZE</name>
Added: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/iframe-help.html
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/iframe-help.html?rev=819960&view=auto
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/iframe-help.html (added)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/iframe-help.html Tue Sep 29 14:16:05 2009
@@ -0,0 +1,48 @@
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You 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.
+-->
+<h1>SSO IFrame Help</h1>
+<p>
+The following preferences can be used with the SSO IFrame Portlet in addition to the standard IFrame preferences
+</p>
+<p>
+<table border="1" cellspacing="1" cellpadding="3">
+<tr>
+<th class="portlet-section-body">Preference</th>
+<th class="portlet-section-body">Usage</th>
+</tr>
+<tr>
+<td class='portlet-section-body'>sso.type</td>
+<td class='portlet-section-body'>The type of Single signon authentication. Valid values: form | basic | basic.preemptive | url | url.base64</td>
+</tr>
+<tr>
+<td class='portlet-section-body'>sso.url.Credential</td>
+<td class='portlet-section-body'>The name of the credential input field or parameter</td>
+</tr>
+<tr>
+<td class='portlet-section-body'>sso.url.Principal</td>
+<td class='portlet-section-body'>The name of the user name input field or parameter</td>
+</tr>
+<tr>
+<td class='portlet-section-body'>SSO Principal</td>
+<td class='portlet-section-body'>The actual user name</td>
+</tr>
+<tr>
+<td class='portlet-section-body'>SSO Credential</td>
+<td class='portlet-section-body'>The actual crendential value</td>
+</tr>
+</table>
+</p>
Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/iframe-help.html
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/iframe-help.html
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/WEB-INF/view/iframe-help.html
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/basicauth.jsp
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/basicauth.jsp?rev=819960&view=auto
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/basicauth.jsp (added)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/basicauth.jsp Tue Sep 29 14:16:05 2009
@@ -0,0 +1,83 @@
+<%--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You 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.
+--%>
+
+<%--
+WARNING:
+
+ This example is provided to demonstrate the SSO feature of SSOReverseProxyIFrame portlet.
+ This is not for production use!
+ You should consult with other examples if you want to implement an authentication.
+
+--%>
+
+<%@ page language="java"%>
+<%@ page import="java.util.Map" %>
+<%@ page import="java.util.HashMap" %>
+<%@ page import="javax.servlet.http.HttpServletRequest" %>
+<%@ page import="javax.servlet.http.HttpServletResponse" %>
+<%@ page import="org.apache.commons.codec.binary.Base64" %>
+<%@ page import="org.apache.commons.lang.StringUtils" %>
+
+<%!
+private static final String REALM = "ExampleBasicAuthJSP";
+
+private Map userInfoMap = new HashMap();
+
+public void jspInit()
+{
+ userInfoMap.put("manager", "manager");
+ userInfoMap.put("admin", "admin");
+}
+
+private boolean authenticate(HttpServletRequest req)
+{
+ try
+ {
+ String authorization = req.getHeader("Authorization");
+
+ if (authorization != null)
+ {
+ Base64 base64 = new Base64();
+ String userInfo = new String(base64.decode(authorization.substring(6).getBytes()));
+ String [] userInfoArray = StringUtils.split(userInfo, ":");
+ String username = userInfoArray[0];
+ String password = userInfoArray[1];
+
+ if (password.equals(userInfoMap.get(username)))
+ {
+ req.getSession().setAttribute("examples.basicauth.username", username);
+ return true;
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+
+ return false;
+}
+%>
+<%
+if (authenticate(request))
+{
+ response.sendRedirect("basicauth_success.jsp");
+}
+else
+{
+ response.setHeader("WWW-Authenticate", "Basic realm=\"" + REALM + "\"");
+ response.sendError(HttpServletResponse.SC_UNAUTHORIZED, "Authentication Failed! You can access by manager/manager or admin/admin.");
+}
+%>
Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/basicauth.jsp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/basicauth.jsp
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/basicauth.jsp
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/basicauth_success.jsp
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/basicauth_success.jsp?rev=819960&view=auto
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/basicauth_success.jsp (added)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/basicauth_success.jsp Tue Sep 29 14:16:05 2009
@@ -0,0 +1,67 @@
+<%--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You 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.
+--%>
+
+<%--
+WARNING:
+
+ This example is provided to demonstrate the SSO feature of SSOReverseProxyIFrame portlet.
+ This is not for production use!
+ You should consult with other examples if you want to implement an authentication.
+
+--%>
+
+<%@ page language="java"%>
+<%@ page import="javax.servlet.http.HttpServletRequest" %>
+<%@ page import="org.apache.commons.codec.binary.Base64" %>
+<%@ page import="org.apache.commons.lang.StringUtils" %>
+
+<%!
+private String getUsername(HttpServletRequest req)
+{
+ try
+ {
+ String authorization = req.getHeader("Authorization");
+
+ if (authorization != null)
+ {
+ Base64 base64 = new Base64();
+ String userInfo = new String(base64.decode(authorization.substring(6).getBytes()));
+ String [] userInfoArray = StringUtils.split(userInfo, ":");
+ return userInfoArray[0];
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+
+ return null;
+}
+%>
+<html>
+<head>
+<title>Authorized by Basic authentication!</title>
+</head>
+<body>
+<p>Hello, <%=session.getAttribute("examples.basicauth.username")%>. You have been authorized by Basic authentication !!!</p>
+
+<hr/>
+<p>
+This example is provided to demonstrate the SSO feature of SSOReverseProxyIFrame portlet.<br/>
+<strong>This is not for production use! You should consult with other examples <br/>if you want to implement an authentication.</strong>
+</p>
+
+</body>
+</html>
Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/basicauth_success.jsp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/basicauth_success.jsp
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/basicauth_success.jsp
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/formauth.jsp
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/formauth.jsp?rev=819960&view=auto
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/formauth.jsp (added)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/formauth.jsp Tue Sep 29 14:16:05 2009
@@ -0,0 +1,99 @@
+<%--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You 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.
+--%>
+
+<%--
+WARNING:
+
+ This example is provided to demonstrate the SSO feature of SSOReverseProxyIFrame portlet.
+ This is not for production use!
+ You should consult with other examples if you want to implement an authentication.
+
+--%>
+
+<%@ page language="java"%>
+<%@ page import="java.util.Map" %>
+<%@ page import="java.util.HashMap" %>
+<%@ page import="javax.servlet.http.HttpServletResponse" %>
+<%@ page import="org.apache.commons.codec.binary.Base64" %>
+<%@ page import="org.apache.commons.lang.StringUtils" %>
+
+<%!
+private Map userInfoMap = new HashMap();
+
+public void jspInit()
+{
+ userInfoMap.put("manager", "manager");
+ userInfoMap.put("admin", "admin");
+}
+
+private boolean authenticate(HttpServletRequest req)
+{
+ try
+ {
+ String username = req.getParameter("user");
+ String password = req.getParameter("pass");
+
+ if (username != null && password != null)
+ {
+ if (password.equals(userInfoMap.get(username)))
+ {
+ req.getSession().setAttribute("examples.formauth.username", username);
+ return true;
+ }
+ }
+ }
+ catch (Exception e)
+ {
+ e.printStackTrace();
+ }
+
+ return false;
+}
+%>
+<%
+if (authenticate(request))
+{
+ response.sendRedirect("formauth_success.jsp");
+}
+else
+{
+%>
+<html>
+<head>
+<title>Form Authentication Example</title>
+</head>
+<body>
+
+<p>
+This example is provided to demonstrate the SSO feature of SSOReverseProxyIFrame portlet.<br/>
+<strong>This is not for production use! You should consult with other examples <br/>if you want to implement an authentication.</strong>
+</p>
+<hr/>
+
+<p>Please login.</p>
+<form method="POST">
+ Name: <input type="text" name="user" size="10"/><br/>
+ Password: <input type="password" name="pass" size="10"/><br/>
+ <input type="submit"/>
+</form>
+<hr/>
+<p>
+ <em>Note: you can log in by manager/manager or admin/admin.</em>
+</p>
+</body>
+</html>
+<%
+}
+%>
Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/formauth.jsp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/formauth.jsp
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/formauth.jsp
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/formauth_success.jsp
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/formauth_success.jsp?rev=819960&view=auto
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/formauth_success.jsp (added)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/formauth_success.jsp Tue Sep 29 14:16:05 2009
@@ -0,0 +1,40 @@
+<%--
+Licensed to the Apache Software Foundation (ASF) under one or more
+contributor license agreements. See the NOTICE file distributed with
+this work for additional information regarding copyright ownership.
+The ASF licenses this file to You 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.
+--%>
+
+<%--
+WARNING:
+
+ This example is provided to demonstrate the SSO feature of SSOReverseProxyIFrame portlet.
+ This is not for production use!
+ You should consult with other examples if you want to implement an authentication.
+
+--%>
+
+<%@ page language="java"%>
+<html>
+<head>
+<title>Authorized by form-based authentication!</title>
+</head>
+<body>
+<p>Hello, <%=session.getAttribute("examples.formauth.username")%>. You have been authorized by form-based authentication !!!</p>
+
+<hr/>
+<p>
+This example is provided to demonstrate the SSO feature of SSOReverseProxyIFrame portlet.<br/>
+<strong>This is not for production use! You should consult with other examples <br/>if you want to implement an authentication.</strong>
+</p>
+
+</body>
+</html>
Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/formauth_success.jsp
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/formauth_success.jsp
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/main/webapp/examples/formauth_success.jsp
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: portals/jetspeed-2/applications/j2-admin/trunk/src/test/java/org/apache/jetspeed/portlets/sso/TestSSOSiteCredentialsProvider.java
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/test/java/org/apache/jetspeed/portlets/sso/TestSSOSiteCredentialsProvider.java?rev=819960&view=auto
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/test/java/org/apache/jetspeed/portlets/sso/TestSSOSiteCredentialsProvider.java (added)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/test/java/org/apache/jetspeed/portlets/sso/TestSSOSiteCredentialsProvider.java Tue Sep 29 14:16:05 2009
@@ -0,0 +1,113 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.portlets.sso;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import junit.framework.TestCase;
+
+import org.apache.portals.applications.webcontent.proxy.SSOSiteCredentials;
+import org.apache.portals.applications.webcontent.proxy.impl.DefaultSSOSiteCredentials;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.mock.web.MockHttpServletRequest;
+import org.springframework.mock.web.MockHttpSession;
+
+public class TestSSOSiteCredentialsProvider extends TestCase
+{
+
+ private static Logger log = LoggerFactory.getLogger(TestSSOSiteCredentialsProvider.class);
+
+ private MockHttpSession session;
+ private List<SSOSiteCredentials> ssoSiteCredsOfSubject;
+
+ @Override
+ public void setUp()
+ {
+ session = new MockHttpSession();
+
+ ssoSiteCredsOfSubject = new ArrayList<SSOSiteCredentials>();
+
+ DefaultSSOSiteCredentials siteCreds = new DefaultSSOSiteCredentials("http://www.localhost.com", "www.localhost.com");
+ siteCreds.setUsername("admin");
+ siteCreds.setPassword("admin");
+ ssoSiteCredsOfSubject.add(siteCreds);
+
+ siteCreds = new DefaultSSOSiteCredentials("http://www.localhost.com/basicauth", "www.localhost.com");
+ siteCreds.setUsername("basic");
+ siteCreds.setPassword("basic");
+ ssoSiteCredsOfSubject.add(siteCreds);
+
+ siteCreds = new DefaultSSOSiteCredentials("http://www.localhost.com/formauth", "www.localhost.com");
+ siteCreds.setFormAuthentication(true);
+ siteCreds.setFormUserField("user");
+ siteCreds.setFormPwdField("pass");
+ siteCreds.setUsername("form");
+ siteCreds.setPassword("form");
+ ssoSiteCredsOfSubject.add(siteCreds);
+
+ session.setAttribute(SSOReverseProxyIFramePortlet.SUBJECT_SSO_SITE_CREDS, ssoSiteCredsOfSubject);
+ }
+
+ public void testBestURLMatches() throws Exception
+ {
+ DefaultSSOSiteCredentialsProviderImpl provider = new DefaultSSOSiteCredentialsProviderImpl();
+ MockHttpServletRequest request = new MockHttpServletRequest();
+ request.setSession(session);
+
+ List<SSOSiteCredentials> siteCreds = provider.getSSOCredentials(request, "http://www.localhost.com");
+ log.info("siteCreds: " + siteCreds);
+ assertNotNull(siteCreds);
+ assertTrue(siteCreds.size() == 1);
+ assertEquals("admin", siteCreds.get(0).getUsername());
+
+ siteCreds = provider.getSSOCredentials(request, "http://www.localhost.com/index.html");
+ log.info("siteCreds: " + siteCreds);
+ assertNotNull(siteCreds);
+ assertTrue(siteCreds.size() == 1);
+ assertEquals("admin", siteCreds.get(0).getUsername());
+
+ siteCreds = provider.getSSOCredentials(request, "http://www.localhost.com/basicauth");
+ log.info("siteCreds: " + siteCreds);
+ assertNotNull(siteCreds);
+ assertTrue(siteCreds.size() == 2);
+ assertEquals("basic", siteCreds.get(0).getUsername());
+ assertEquals("admin", siteCreds.get(1).getUsername());
+
+ siteCreds = provider.getSSOCredentials(request, "http://www.localhost.com/basicauth/index.html");
+ log.info("siteCreds: " + siteCreds);
+ assertNotNull(siteCreds);
+ assertTrue(siteCreds.size() == 2);
+ assertEquals("basic", siteCreds.get(0).getUsername());
+ assertEquals("admin", siteCreds.get(1).getUsername());
+
+ siteCreds = provider.getSSOCredentials(request, "http://www.localhost.com/formauth");
+ log.info("siteCreds: " + siteCreds);
+ assertNotNull(siteCreds);
+ assertTrue(siteCreds.size() == 2);
+ assertEquals("form", siteCreds.get(0).getUsername());
+ assertEquals("admin", siteCreds.get(1).getUsername());
+
+ siteCreds = provider.getSSOCredentials(request, "http://www.localhost.com/formauth/index.html");
+ log.info("siteCreds: " + siteCreds);
+ assertNotNull(siteCreds);
+ assertTrue(siteCreds.size() == 2);
+ assertEquals("form", siteCreds.get(0).getUsername());
+ assertEquals("admin", siteCreds.get(1).getUsername());
+ }
+}
Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/test/java/org/apache/jetspeed/portlets/sso/TestSSOSiteCredentialsProvider.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/test/java/org/apache/jetspeed/portlets/sso/TestSSOSiteCredentialsProvider.java
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/test/java/org/apache/jetspeed/portlets/sso/TestSSOSiteCredentialsProvider.java
------------------------------------------------------------------------------
svn:mime-type = text/plain
Added: portals/jetspeed-2/applications/j2-admin/trunk/src/test/resources/log4j.properties
URL: http://svn.apache.org/viewvc/portals/jetspeed-2/applications/j2-admin/trunk/src/test/resources/log4j.properties?rev=819960&view=auto
==============================================================================
--- portals/jetspeed-2/applications/j2-admin/trunk/src/test/resources/log4j.properties (added)
+++ portals/jetspeed-2/applications/j2-admin/trunk/src/test/resources/log4j.properties Tue Sep 29 14:16:05 2009
@@ -0,0 +1,34 @@
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You 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.
+# ------------------------------------------------------------------------
+#
+# Logging Configuration
+#
+# $Id:$
+#
+# ------------------------------------------------------------------------
+
+log4j.rootLogger = INFO, console
+
+log4j.category.org.apache.jetspeed = INFO, console
+log4j.additivity.org.apache.jetspeed = false
+
+#
+# Console
+#
+log4j.appender.console = org.apache.log4j.ConsoleAppender
+log4j.appender.console.layout = org.apache.log4j.PatternLayout
+# Pattern to output the caller's file name and line number.
+log4j.appender.console.layout.ConversionPattern = %d [%t] %-5p %c{1}:%L - %m%n
Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/test/resources/log4j.properties
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/test/resources/log4j.properties
------------------------------------------------------------------------------
svn:keywords = Id
Propchange: portals/jetspeed-2/applications/j2-admin/trunk/src/test/resources/log4j.properties
------------------------------------------------------------------------------
svn:mime-type = text/plain
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@portals.apache.org
For additional commands, e-mail: jetspeed-dev-help@portals.apache.org