r4586 - trunk/src/edu/ucsb/nceas/metacat
daigle at ecoinformatics.org
daigle at ecoinformatics.org
Wed Nov 19 15:11:37 PST 2008
Author: daigle
Date: 2008-11-19 15:11:37 -0800 (Wed, 19 Nov 2008)
New Revision: 4586
Added:
trunk/src/edu/ucsb/nceas/metacat/AuthTest.java
Log:
Added this class to be able to test multiple authentication strategies
Added: trunk/src/edu/ucsb/nceas/metacat/AuthTest.java
===================================================================
--- trunk/src/edu/ucsb/nceas/metacat/AuthTest.java (rev 0)
+++ trunk/src/edu/ucsb/nceas/metacat/AuthTest.java 2008-11-19 23:11:37 UTC (rev 4586)
@@ -0,0 +1,272 @@
+/**
+ * '$RCSfile$'
+ * Purpose: An implementation of the AuthInterface interface that
+ * allows Metacat to use the LDAP protocol for
+ * directory services
+ * Copyright: 2000 Regents of the University of California and the
+ * National Center for Ecological Analysis and Synthesis
+ * Authors: Matt Jones
+ *
+ * '$Author: daigle $'
+ * '$Date: 2008-11-10 15:22:04 -0800 (Mon, 10 Nov 2008) $'
+ * '$Revision: 4547 $'
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+package edu.ucsb.nceas.metacat;
+
+import java.net.ConnectException;
+
+import org.apache.log4j.Logger;
+
+import edu.ucsb.nceas.metacat.service.PropertyService;
+import edu.ucsb.nceas.utilities.PropertyNotFoundException;
+
+import java.lang.InstantiationException;
+import java.util.HashMap;
+import java.util.Vector;
+
+/**
+ * An implementation of the AuthInterface interface that
+ * allows Metacat to use the LDAP protocol for directory services.
+ * The LDAP authentication service is used to determine if a user
+ * is authenticated, and whether they are a member of a particular group.
+ */
+public class AuthTest implements AuthInterface {
+ private String authUrl = "";
+ private String testUser = "test-user";
+ private String testUserName = "Test User";
+ private String testPassword = "test-password";
+ private String testGroup = "test-group";
+ private String testGroupDesc = "this is a test group";
+ private String testOrg = "NCEAS";
+ private String testOrgUnit = "UCSB";
+ private String testEmail = "test-user at dummy.email.com";
+ private String otherTestUser = "other-test-user";
+ private String otherTestUserName = "Other Test User";
+ private String otherTestGroup = "other-test-group";
+ private String otherTestGroupDesc = "this is a another test group";
+ private String otherTestOrg = "DUMMY";
+ private String otherTestOrgUnit = "UCLA";
+ private String otherTestEmail = "other-test-user at dummy.email.com";
+ private String attributeName = "attribute-name";
+ private String attributeValue1 = "attribute-value1";
+ private String attributeValue2 = "attribute-value2";
+
+
+ private static Logger logMetacat = Logger.getLogger(AuthTest.class);
+
+ /**
+ * Construct an AuthTest
+ */
+ public AuthTest() throws InstantiationException {
+ try {
+ authUrl = PropertyService.getProperty("auth.url");
+ }
+ catch (PropertyNotFoundException pnfe) {
+ throw new InstantiationException(
+ "Could not instantiate AuthTest. Property not found: "
+ + pnfe.getMessage());
+ }
+ }
+
+ /**
+ * Determine if a user/password are valid according to the authentication
+ * service.
+ *
+ * @param user
+ * the name of the principal to authenticate
+ * @param password
+ * the password to use for authentication
+ * @returns boolean true if authentication successful, false otherwise
+ */
+
+ public boolean authenticate(String user, String password) throws ConnectException {
+ if (user.equals(testUser) && password.equals(testPassword)) {
+ logMetacat.debug(user + " is authenticated");
+ return true;
+ }
+
+ logMetacat.debug(user + " could not be authenticated");
+ return false;
+ }
+
+ /**
+ * Get all users from the authentication service
+ *
+ * @param user the user for authenticating against the service
+ * @param password the password for authenticating against the service
+ * @returns string array of all of the user names
+ */
+ public String[][] getUsers(String user, String password) throws
+ ConnectException {
+ String[][] users = new String[1][1];
+
+ users[0][0] = testUser;
+
+ return users;
+ }
+
+
+ /**
+ * Get all users from the authentication service
+ *
+ * @param user the user for authenticating against the service
+ * @param password the password for authenticating against the service
+ * @returns string array of all of the user names
+ */
+ public String[] getUserInfo(String user, String password) throws
+ ConnectException {
+ String[] userinfo = new String[3];
+
+ userinfo[0] = testUser;
+ userinfo[1] = testOrg;
+ userinfo[2] = testEmail;
+
+ return userinfo;
+ }
+
+ /**
+ * Get the users for a particular group from the authentication service
+ *
+ * @param user the user for authenticating against the service
+ * @param password the password for authenticating against the service
+ * @param group the group whose user list should be returned
+ * @returns string array of the user names belonging to the group
+ */
+ public String[] getUsers(String user, String password, String group) throws
+ ConnectException {
+ String[] users = null;
+
+ users[0] = testUser;
+
+ return users;
+ }
+
+ /**
+ * Get all groups from the authentication service
+ *
+ * @param user the user for authenticating against the service
+ * @param password the password for authenticating against the service
+ * @returns string array of the group names
+ */
+ public String[][] getGroups(String user, String password) throws
+ ConnectException {
+ return getGroups(user, password, null);
+ }
+
+ /**
+ * Get the groups for a particular user from the authentication service
+ *
+ * @param user the user for authenticating against the service
+ * @param password the password for authenticating against the service
+ * @param foruser the user whose group list should be returned
+ * @returns string array of the group names
+ */
+ public String[][] getGroups(String user, String password,
+ String foruser) throws ConnectException {
+
+ //build and return the groups array
+ String groups[][] = new String[1][2];
+
+ if (user.equals(testUser) && password.equals(testPassword)) {
+ if (foruser != null) {
+ groups[0][1] = testGroup;
+ groups[0][1] = testGroupDesc;
+ } else if (foruser.equals(otherTestUser)) {
+ groups[0][0] = otherTestGroup;
+ groups[0][1] = otherTestGroupDesc;
+ }
+ }
+
+ return groups;
+
+ }
+
+ /**
+ * Get attributes describing a user or group
+ *
+ * @param foruser the user for which the attribute list is requested
+ * @returns HashMap a map of attribute name to a Vector of values
+ */
+ public HashMap<String,Vector<String>> getAttributes(String foruser) throws ConnectException {
+ return getAttributes(null, null, foruser);
+ }
+
+ /**
+ * Get attributes describing a user or group
+ *
+ * @param user the user for authenticating against the service
+ * @param password the password for authenticating against the service
+ * @param foruser the user whose attributes should be returned
+ * @returns HashMap a map of attribute name to a Vector of values
+ */
+ public HashMap<String,Vector<String>> getAttributes(String user, String password,
+ String foruser) throws ConnectException {
+ HashMap<String,Vector<String>> attributes = new HashMap<String,Vector<String>>();
+
+ if (foruser.equals(otherTestUser)) {
+ Vector<String> attributeValues = new Vector<String>();
+ attributeValues.add(attributeValue1);
+ attributeValues.add(attributeValue2);
+
+ attributes.put(attributeName, attributeValues);
+ }
+
+ return attributes;
+ }
+
+ /**
+ * Get all groups and users from authentication scheme.
+ * The output is formatted in XML.
+ * @param user the user which requests the information
+ * @param password the user's password
+ */
+ public String getPrincipals(String user, String password) throws
+ ConnectException {
+ String out = new String();
+
+ out += "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";
+ out += "<principals>\n";
+ out += " <authSystem URI=\"" + authUrl +">\n";
+ out += " <group>\n";
+ out += " <groupname>" + testGroup + "</groupname>\n";
+ out += " <description>" + testGroupDesc + "</description>\n";
+ out += " <user>\n";
+ out += " <username>" + testUser +"</username>\n";
+ out += " <name>" + testUserName +"</name>\n";
+ out += " <organization>" + testOrg + "</organization>\n";
+ out += " <organizationUnitName>" + testOrgUnit + "</organizationUnitName>\n";
+ out += " <email>" + testEmail + "</email>\n";
+ out += " </user>\n";
+ out += " </group>\n";
+ out += " <group>\n";
+ out += " <groupname>" + otherTestGroup + "</groupname>\n";
+ out += " <description>" + otherTestGroupDesc + "</description>\n";
+ out += " <user>\n";
+ out += " <username>" + otherTestUser +"</username>\n";
+ out += " <name>" + otherTestUserName +"</name>\n";
+ out += " <organization>" + otherTestOrg + "</organization>\n";
+ out += " <organizationUnitName>" + otherTestOrgUnit + "</organizationUnitName>\n";
+ out += " <email>" + otherTestEmail + "</email>\n";
+ out += " </user>\n";
+ out += " </group>\n";
+ out += " </authSystem>\n";
+ out += "</principals>";
+
+ return out;
+ }
+}
\ No newline at end of file
Property changes on: trunk/src/edu/ucsb/nceas/metacat/AuthTest.java
___________________________________________________________________
Name: svn:executable
+ *
More information about the Metacat-cvs
mailing list