Project

General

Profile

1
/**
2
 *  '$RCSfile$'
3
 *    Purpose: An implementation of the AuthInterface interface that
4
 *             allows Metacat to use the LDAP protocol for
5
 *             directory services
6
 *  Copyright: 2000 Regents of the University of California and the
7
 *             National Center for Ecological Analysis and Synthesis
8
 *    Authors: Matt Jones
9
 *
10
 *   '$Author: daigle $'
11
 *     '$Date: 2008-11-10 15:22:04 -0800 (Mon, 10 Nov 2008) $'
12
 * '$Revision: 4547 $'
13
 *
14
 * This program is free software; you can redistribute it and/or modify
15
 * it under the terms of the GNU General Public License as published by
16
 * the Free Software Foundation; either version 2 of the License, or
17
 * (at your option) any later version.
18
 *
19
 * This program is distributed in the hope that it will be useful,
20
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
22
 * GNU General Public License for more details.
23
 *
24
 * You should have received a copy of the GNU General Public License
25
 * along with this program; if not, write to the Free Software
26
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
27
 */
28

    
29
package edu.ucsb.nceas.metacat;
30

    
31
import java.net.ConnectException;
32

    
33
import org.apache.log4j.Logger;
34

    
35
import edu.ucsb.nceas.metacat.properties.PropertyService;
36
import edu.ucsb.nceas.utilities.PropertyNotFoundException;
37

    
38
import java.lang.InstantiationException;
39
import java.util.HashMap;
40
import java.util.Vector;
41

    
42
/**
43
 * An implementation of the AuthInterface interface that
44
 * allows Metacat to use the LDAP protocol for directory services.
45
 * The LDAP authentication service is used to determine if a user
46
 * is authenticated, and whether they are a member of a particular group.
47
 */
48
public class AuthStub implements AuthInterface {
49
	
50

    
51
  private static Logger logMetacat = Logger.getLogger(AuthTest.class);
52
  
53
    /**
54
	 * Construct an AuthTest
55
	 */
56
	public AuthStub() throws InstantiationException {	
57
	}
58

    
59
  /**
60
	 * Determine if a user/password are valid according to the authentication
61
	 * service.
62
	 * 
63
	 * @param user
64
	 *            the name of the principal to authenticate
65
	 * @param password
66
	 *            the password to use for authentication
67
	 * @returns boolean true if authentication successful, false otherwise
68
	 */
69
  
70
  public boolean authenticate(String user, String password) throws ConnectException {
71
	  return true;
72
  }
73
  
74
  /**
75
   * Get all users from the authentication service
76
   *
77
   * @param user the user for authenticating against the service
78
   * @param password the password for authenticating against the service
79
   * @returns string array of all of the user names
80
   */
81
  public String[][] getUsers(String user, String password) throws 
82
    ConnectException {
83
    String[][] users = new String[1][1];
84
    
85
    users[0][0] = "bogusUser";
86
    
87
    return users;
88
  }
89

    
90
  
91
  /**
92
   * Get all users from the authentication service
93
   *
94
   * @param user the user for authenticating against the service
95
   * @param password the password for authenticating against the service
96
   * @returns string array of all of the user names
97
   */
98
  public String[] getUserInfo(String user, String password) throws 
99
    ConnectException {
100
    String[] userinfo = new String[3];
101

    
102
    userinfo[0] = "bogusUser";
103
    userinfo[1] = "bogusOrg";
104
    userinfo[2] = "bogusEmail";
105

    
106
    return userinfo;
107
  }
108

    
109
  /**
110
   * Get the users for a particular group from the authentication service
111
   *
112
   * @param user the user for authenticating against the service
113
   * @param password the password for authenticating against the service
114
   * @param group the group whose user list should be returned
115
   * @returns string array of the user names belonging to the group
116
   */
117
  public String[] getUsers(String user, String password, String group) throws 
118
    ConnectException {
119
    String[] users = null;
120

    
121
    users[0] = "bogusUser";
122

    
123
    return users;
124
  }
125

    
126
  /**
127
   * Get all groups from the authentication service
128
   *
129
   * @param user the user for authenticating against the service
130
   * @param password the password for authenticating against the service
131
   * @returns string array of the group names
132
   */
133
  public String[][] getGroups(String user, String password) throws 
134
    ConnectException {
135
    return getGroups(user, password, null);
136
  }
137

    
138
  /**
139
   * Get the groups for a particular user from the authentication service
140
   *
141
   * @param user the user for authenticating against the service
142
   * @param password the password for authenticating against the service
143
   * @param foruser the user whose group list should be returned
144
   * @returns string array of the group names
145
   */
146
  public String[][] getGroups(String user, String password, 
147
    String foruser) throws ConnectException {
148
    
149
    //build and return the groups array
150
    String groups[][] = new String[1][2];
151
    
152
    groups[0][1] = "bogusGroup";
153
    groups[0][1] = "bogusGroupDesc";
154

    
155
    return groups;
156

    
157
  }
158

    
159
  /**
160
   * Get attributes describing a user or group
161
   *
162
   * @param foruser the user for which the attribute list is requested
163
   * @returns HashMap a map of attribute name to a Vector of values
164
   */
165
  public HashMap<String,Vector<String>> getAttributes(String foruser) throws ConnectException {
166
    return getAttributes(null, null, foruser);
167
  }
168

    
169
  /**
170
   * Get attributes describing a user or group
171
   *
172
   * @param user the user for authenticating against the service
173
   * @param password the password for authenticating against the service
174
   * @param foruser the user whose attributes should be returned
175
   * @returns HashMap a map of attribute name to a Vector of values
176
   */
177
  public HashMap<String,Vector<String>> getAttributes(String user, String password, 
178
    String foruser) throws ConnectException {
179
    HashMap<String,Vector<String>> attributes = new HashMap<String,Vector<String>>();
180
    
181
    Vector<String> attributeValues = new Vector<String>();
182
    attributeValues.add("bogusValue1");
183
    attributeValues.add("bogusValue2");
184
    	
185
    attributes.put("bogusAttributeName", attributeValues);
186

    
187
    return attributes;
188
  }
189

    
190
  /**
191
   * Get all groups and users from authentication scheme.
192
   * The output is formatted in XML.
193
   * @param user the user which requests the information
194
   * @param password the user's password
195
   */
196
  public String getPrincipals(String user, String password) throws 
197
    ConnectException {
198
    String out = new String();
199
   
200
    out += "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n";
201
    out += "<principals>\n";
202
    out += "  <authSystem URI=\"bogusAuthUrl>\n";
203
    out += "    <group>\n";
204
    out += "      <groupname>bogusTestGroup</groupname>\n";
205
    out += "      <description>bogusTestGroupDesc</description>\n";
206
    out += "      <user>\n";
207
    out += "        <username>bogusTestUser</username>\n";
208
    out += "        <name>bogusTestUserName</name>\n";
209
    out += "        <organization>bogusTestOrg</organization>\n";
210
    out += "        <organizationUnitName>bogusTestOrgUnit</organizationUnitName>\n";
211
    out += "        <email>bogusTestEmail</email>\n";
212
    out += "      </user>\n";
213
    out += "    </group>\n";
214
    out += "    <group>\n";
215
    out += "      <groupname>bogusOtherTestGroup</groupname>\n";
216
    out += "      <description>bogusOtherTestGroupDesc</description>\n";
217
    out += "      <user>\n";
218
    out += "        <username>bogusOtherTestUser</username>\n";
219
    out += "        <name>bogusOtherTestUserName</name>\n";
220
    out += "        <organization>bogusOtherTestOrg</organization>\n";
221
    out += "        <organizationUnitName>bogusOtherTestOrgUnit</organizationUnitName>\n";
222
    out += "        <email>bogusOtherTestEmail</email>\n";
223
    out += "      </user>\n";
224
    out += "    </group>\n";
225
    out += "  </authSystem>\n";
226
    out += "</principals>";
227
    
228
    return out;
229
  }
230
}
(8-8/62)