taylor 2004/11/28 11:02:23
Modified: components/web-content/src/java/org/apache/jetspeed/portlet
IFrameGenericPortlet.java SSOIFramePortlet.java
Log:
update to latest api calls, allow for updating of credentials
Revision Changes Path
1.5 +10 -2
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.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- IFrameGenericPortlet.java 26 Nov 2004 18:56:34 -0000 1.4
+++ IFrameGenericPortlet.java 28 Nov 2004 19:02:23 -0000 1.5
@@ -106,7 +106,15 @@
public void doView(RenderRequest request, RenderResponse response)
throws PortletException, IOException
{
- doIFrame(request, response);
+ String viewPage = (String)request.getAttribute(PARAM_VIEW_PAGE);
+ if (viewPage != null)
+ {
+ super.doView(request, response);
+ }
+ else
+ {
+ doIFrame(request, response);
+ }
}
public void doEdit(RenderRequest request, RenderResponse response)
throws PortletException, IOException
1.2 +115 -8
jakarta-jetspeed-2/components/web-content/src/java/org/apache/jetspeed/portlet/SSOIFramePortlet.java
Index: SSOIFramePortlet.java
===================================================================
RCS file:
/home/cvs/jakarta-jetspeed-2/components/web-content/src/java/org/apache/jetspeed/portlet/SSOIFramePortlet.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SSOIFramePortlet.java 26 Nov 2004 18:56:34 -0000 1.1
+++ SSOIFramePortlet.java 28 Nov 2004 19:02:23 -0000 1.2
@@ -15,16 +15,22 @@
*/
package org.apache.jetspeed.portlet;
+import java.io.IOException;
import java.security.AccessControlContext;
import java.security.AccessController;
import javax.security.auth.Subject;
+import javax.portlet.ActionRequest;
+import javax.portlet.ActionResponse;
import javax.portlet.PortletConfig;
import javax.portlet.PortletContext;
import javax.portlet.PortletException;
import javax.portlet.PortletPreferences;
import javax.portlet.RenderRequest;
+import javax.portlet.RenderResponse;
+import org.apache.jetspeed.sso.SSOContext;
+import org.apache.jetspeed.sso.SSOException;
import org.apache.jetspeed.sso.SSOProvider;
@@ -45,6 +51,8 @@
public static final String SSO_TYPE_URL_USERNAME =
"sso.url.param.username";
public static final String SSO_TYPE_URL_PASSWORD =
"sso.url.param.password";
+ public static final String SSO_REQUEST_ATTRIBUTE_USERNAME =
"sso.ra.username";
+ public static final String SSO_REQUEST_ATTRIBUTE_PASSWORD =
"sso.ra.password";
private PortletContext context;
private SSOProvider sso;
@@ -59,7 +67,102 @@
throw new PortletException("Failed to find SSO Provider on
portlet initialization");
}
}
+
+ public void doEdit(RenderRequest request, RenderResponse response)
+ throws PortletException, IOException
+ {
+ try
+ {
+ Subject subject = getSubject();
+ String site = request.getPreferences().getValue("SRC", "");
+ SSOContext context = sso.getCredentials(subject, site);
+ getContext(request).put("ssoUserName", context.getUserName());
+ getContext(request).put("ssoCredential", context.getPassword());
+ }
+ catch (SSOException e)
+ {
+ if (e.getMessage().equals(SSOException.NO_CREDENTIALS_FOR_SITE))
+ {
+ // no credentials configured in SSO store
+ // switch to SSO Configure View
+ getContext(request).put("ssoUserName", "");
+ getContext(request).put("ssoCredential", "");
+ }
+ else
+ {
+ throw new PortletException(e);
+ }
+ }
+
+ super.doEdit(request, response);
+ }
+
+ public void doView(RenderRequest request, RenderResponse response)
+ throws PortletException, IOException
+ {
+ String site = request.getPreferences().getValue("SRC", null);
+ if (site == null)
+ {
+ // no credentials configured in SSO store
+ // switch to SSO Configure View
+ request.setAttribute(PARAM_VIEW_PAGE,
this.getPortletConfig().getInitParameter(PARAM_EDIT_PAGE));
+ super.doView(request, response);
+ return;
+ }
+
+ try
+ {
+ Subject subject = getSubject();
+ SSOContext context = sso.getCredentials(subject, site);
+ request.setAttribute(SSO_REQUEST_ATTRIBUTE_USERNAME,
context.getUserName());
+ request.setAttribute(SSO_REQUEST_ATTRIBUTE_PASSWORD,
context.getPassword());
+ }
+ catch (SSOException e)
+ {
+ if (e.getMessage().equals(SSOException.NO_CREDENTIALS_FOR_SITE))
+ {
+ // no credentials configured in SSO store
+ // switch to SSO Configure View
+ request.setAttribute(PARAM_VIEW_PAGE,
this.getPortletConfig().getInitParameter(PARAM_EDIT_PAGE));
+ }
+ else
+ {
+ throw new PortletException(e);
+ }
+ }
+
+ super.doView(request, response);
+ }
+
+ public void processAction(ActionRequest request, ActionResponse
actionResponse)
+ throws PortletException, IOException
+ {
+ // save the prefs
+ super.processAction(request, actionResponse);
+ // save the SSO params
+ String ssoUserName = request.getParameter("ssoUserName");
+ String ssoCredential = request.getParameter("ssoCredential");
+ String site = request.getPreferences().getValue("SRC", "");
+ try
+ {
+ Subject subject = getSubject();
+ if (sso.hasSSOCredentials(subject, site))
+ {
+ sso.updateCredentialsForSite(getSubject(), "TODO", site,
ssoCredential);
+ }
+ else
+ {
+ sso.addCredentialsForSite(getSubject(), "TODO", site,
ssoCredential);
+ }
+ }
+ catch (SSOException e)
+ {
+ throw new PortletException(e);
+ }
+
+ }
+
public String getURLSource(RenderRequest request, PortletPreferences
prefs)
{
String baseSource = super.getURLSource(request, prefs);
@@ -77,19 +180,19 @@
{
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
+ String userName =
(String)request.getAttribute(SSO_REQUEST_ATTRIBUTE_USERNAME);
+ if (userName == null) userName = "";
+ String password =
(String)request.getAttribute(SSO_REQUEST_ATTRIBUTE_PASSWORD);
+ if (password == null) password = "";
- source.append("joey");
+ source.append(userName);
source.append("&");
source.append(passwordParam);
source.append("=");
- source.append("joeys-password");
+ source.append(password);
return source.toString();
}
else
@@ -98,6 +201,10 @@
}
}
-
+ private Subject getSubject()
+ {
+ AccessControlContext context = AccessController.getContext();
+ return Subject.getSubject(context);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]