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 ro...@apache.org on 2005/02/02 01:49:33 UTC
cvs commit: jakarta-jetspeed-2/applications/gems/src/java/org/apache/portals/gems/browser BrowserPortlet.java DatabaseBrowserPortlet.java
rogerrut 2005/02/01 16:49:33
Modified: applications/gems/src/java/org/apache/portals/gems/browser
BrowserPortlet.java DatabaseBrowserPortlet.java
Log:
SSO -- Added SSO support to Database Browser
Revision Changes Path
1.6 +15 -0 jakarta-jetspeed-2/applications/gems/src/java/org/apache/portals/gems/browser/BrowserPortlet.java
Index: BrowserPortlet.java
===================================================================
RCS file: /home/cvs/jakarta-jetspeed-2/applications/gems/src/java/org/apache/portals/gems/browser/BrowserPortlet.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- BrowserPortlet.java 21 Jan 2005 22:10:08 -0000 1.5
+++ BrowserPortlet.java 2 Feb 2005 00:49:33 -0000 1.6
@@ -22,6 +22,7 @@
import javax.portlet.ActionRequest;
import javax.portlet.ActionResponse;
+import javax.portlet.PortletContext;
import javax.portlet.PortletException;
import javax.portlet.PortletMode;
import javax.portlet.PortletConfig;
@@ -33,6 +34,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.apache.jetspeed.sso.SSOProvider;
import org.apache.portals.bridges.velocity.GenericVelocityPortlet;
import org.apache.portals.gems.util.StatusMessage;
import org.apache.portals.messaging.PortletMessaging;
@@ -108,6 +110,12 @@
protected static final String SORT_COLUMN_NAME = "js_dbcolumn";
protected List sqlParameters = new Vector();
+
+ /*
+ * SSO link
+ */
+ protected PortletContext context;
+ protected SSOProvider sso;
/**
* Static initialization of the logger for this class
@@ -117,6 +125,13 @@
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 void getRows(RenderRequest request, String sql, int windowSize)
1.8 +36 -2 jakarta-jetspeed-2/applications/gems/src/java/org/apache/portals/gems/browser/DatabaseBrowserPortlet.java
Index: DatabaseBrowserPortlet.java
===================================================================
RCS file: /home/cvs/jakarta-jetspeed-2/applications/gems/src/java/org/apache/portals/gems/browser/DatabaseBrowserPortlet.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- DatabaseBrowserPortlet.java 20 Jan 2005 21:14:44 -0000 1.7
+++ DatabaseBrowserPortlet.java 2 Feb 2005 00:49:33 -0000 1.8
@@ -16,6 +16,8 @@
package org.apache.portals.gems.browser;
import java.io.IOException;
+import java.security.AccessControlContext;
+import java.security.AccessController;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -37,9 +39,12 @@
import javax.portlet.PortletSession;
import javax.portlet.RenderRequest;
import javax.portlet.RenderResponse;
+import javax.security.auth.Subject;
import javax.sql.DataSource;
import org.apache.commons.dbcp.BasicDataSource;
+import org.apache.jetspeed.sso.SSOContext;
+import org.apache.jetspeed.sso.SSOException;
import org.apache.portals.bridges.util.PreferencesHelper;
import org.apache.portals.gems.util.StatusMessage;
import org.apache.portals.messaging.PortletMessaging;
@@ -252,7 +257,31 @@
}
else if (dsType.equals("sso"))
{
- // TODO: write this
+ /*
+ * For SSO the user has to define the JDBCdriver and JdbcConnection (URL)
+ * but the credentials for the db come from the SSO storage
+ */
+ BasicDataSource ds = new BasicDataSource();
+ ds.setDriverClassName(prefs.getValue("SSOJdbcDriver", ""));
+ ds.setUrl(prefs.getValue("SSOJdbcConnection", ""));
+ String ssoURL = prefs.getValue("SSOSite", "");
+
+ // SSO API lookup
+ SSOContext credentials = null;
+ try
+ {
+ credentials = sso.getCredentials(getSubject(), ssoURL);
+ }
+ catch(SSOException ssoex)
+ {
+ throw new Exception("SSO credential lookup failed. Error: " + ssoex.getMessage());
+ }
+
+ String ssoUserName = credentials.getRemotePrincipalName();
+ String ssoPWD = credentials.getRemoteCredential();
+ ds.setUsername(ssoUserName);
+ ds.setPassword( ssoPWD );
+ con = ds.getConnection();
}
else
{
@@ -333,4 +362,9 @@
super.processAction(request, response);
}
+ private Subject getSubject()
+ {
+ AccessControlContext context = AccessController.getContext();
+ return Subject.getSubject(context);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: jetspeed-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jetspeed-dev-help@jakarta.apache.org