001    package org.apache.turbine.services.security.ldap;
002    
003    /*
004     * Licensed to the Apache Software Foundation (ASF) under one
005     * or more contributor license agreements.  See the NOTICE file
006     * distributed with this work for additional information
007     * regarding copyright ownership.  The ASF licenses this file
008     * to you under the Apache License, Version 2.0 (the
009     * "License"); you may not use this file except in compliance
010     * with the License.  You may obtain a copy of the License at
011     *
012     *   http://www.apache.org/licenses/LICENSE-2.0
013     *
014     * Unless required by applicable law or agreed to in writing,
015     * software distributed under the License is distributed on an
016     * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
017     * KIND, either express or implied.  See the License for the
018     * specific language governing permissions and limitations
019     * under the License.
020     */
021    
022    import java.util.Properties;
023    
024    import org.apache.turbine.services.security.TurbineSecurity;
025    
026    /**
027     * <p>This is a static class for defining the default ldap confiquration
028     * keys used by core Turbine components.</p>
029     *
030     * @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
031     * @author <a href="mailto:hhernandez@itweb.com.mx">Humberto Hernandez</a>
032     * @version $Id: LDAPSecurityConstants.java 957284 2010-06-23 17:53:31Z tv $
033     */
034    public class LDAPSecurityConstants
035    {
036        /** Property key */
037        public static final String LDAP_ADMIN_USERNAME_KEY = "ldap.admin.username";
038    
039        /** Property key */
040        public static final String LDAP_ADMIN_PASSWORD_KEY = "ldap.admin.password";
041    
042        /** Property key */
043        public static final String LDAP_HOST_KEY = "ldap.host";
044    
045        /** Property default value */
046        public static final String LDAP_HOST_DEFAULT = "localhost";
047    
048        /** Property key */
049        public static final String LDAP_PORT_KEY = "ldap.port";
050    
051        /** Property default value */
052        public static final String LDAP_PORT_DEFAULT = "389";
053    
054        /** Property key */
055        public static final String LDAP_PROVIDER_KEY = "ldap.provider";
056    
057        /** Property default value */
058        public static final String LDAP_PROVIDER_DEFAULT =
059                "com.sun.jndi.ldap.LdapCtxFactory";
060    
061        /** Property key */
062        public static final String LDAP_BASE_SEARCH_KEY = "ldap.basesearch";
063    
064        /** Property key */
065        public static final String LDAP_AUTH_KEY = "ldap.security.authentication";
066    
067        /** Property default value */
068        public static final String LDAP_AUTH_DEFAULT = "simple";
069    
070        /** Property key */
071        public static final String LDAP_USER_USERID_KEY = "ldap.user.userid";
072    
073        /** Property default value */
074        public static final String LDAP_USER_USERID_DEFAULT = "uid";
075    
076        /** Property key */
077        public static final String LDAP_USER_USERNAME_KEY = "ldap.user.username";
078    
079        /** Property default value */
080        public static final String LDAP_USER_USERNAME_DEFAULT = "turbineUserUniqueId";
081    
082        /** Property key */
083        public static final String LDAP_USER_FIRSTNAME_KEY = "ldap.user.firstname";
084    
085        /** Property default value */
086        public static final String LDAP_USER_FIRSTNAME_DEFAULT = "turbineUserFirstName";
087    
088        /** Property key */
089        public static final String LDAP_USER_LASTNAME_KEY = "ldap.user.lastname";
090    
091        /** Property default value */
092        public static final String LDAP_USER_LASTNAME_DEFAULT = "turbineUserLastName";
093    
094        /** Property key */
095        public static final String LDAP_USER_EMAIL_KEY = "ldap.user.email";
096    
097        /** Property default value */
098        public static final String LDAP_USER_EMAIL_DEFAULT = "turbineUserMailAddress";
099    
100        /** Property key */
101        public static final String LDAP_USER_PASSWORD_KEY = "ldap.user.password";
102    
103        /** Property default value */
104        public static final String LDAP_USER_PASSWORD_DEFAULT = "userPassword";
105    
106        /**
107         * Get all the properties for the security service.
108         * @return all the properties of the security service.
109         */
110        public static Properties getProperties()
111        {
112            return TurbineSecurity.getService().getProperties();
113        }
114    
115        /**
116         * Get a property from the LDAP security service.
117         * @param key The key to access the value of the property.
118         * @return The value of the property.
119         */
120        public static String getProperty(String key)
121        {
122            return getProperties().getProperty(key);
123        }
124    
125        /**
126         * Get a property from the LDAP security service.
127         * @param key The key to access the value of the property.
128         * @param defaultValue The value that the property takes
129         *        when it doesn't exist.
130         * @return The value of the property.
131         */
132        public static String getProperty(String key, String defaultValue)
133        {
134            return getProperties().getProperty(key, defaultValue);
135        }
136    
137        /**
138         * Get the value of the property for the administration username.
139         * @return the value of the property.
140         */
141        public static String getAdminUsername()
142        {
143            String str = getProperty(LDAP_ADMIN_USERNAME_KEY);
144    
145            /*
146             * The adminUsername string contains some
147             * characters that need to be transformed.
148             */
149            str = str.replace('/', '=');
150            str = str.replace('%', ',');
151            return str;
152        }
153    
154        /**
155         * Get the value of the property for the administration password.
156         * @return the value of the property.
157         */
158        public static String getAdminPassword()
159        {
160            return getProperty(LDAP_ADMIN_PASSWORD_KEY);
161        }
162    
163        /**
164         * Get the value of the property for the LDAP Host.
165         * @return the value of the property.
166         */
167        public static String getLDAPHost()
168        {
169            return getProperty(LDAP_HOST_KEY, LDAP_HOST_DEFAULT);
170        }
171    
172        /**
173         * Get the value of the property for the LDAP Port.
174         * @return the value of the property.
175         */
176        public static String getLDAPPort()
177        {
178            return getProperty(LDAP_PORT_KEY, LDAP_PORT_DEFAULT);
179        }
180    
181        /**
182         * Get the value of the property for the  LDAP Provider.
183         * @return the value of the property.
184         */
185        public static String getLDAPProvider()
186        {
187            return getProperty(LDAP_PROVIDER_KEY, LDAP_PROVIDER_DEFAULT);
188        }
189    
190        /**
191         * Get value of the property for the Base Search.
192         * @return the value of the property.
193         */
194        public static String getBaseSearch()
195        {
196            String str = getProperty(LDAP_BASE_SEARCH_KEY);
197    
198            /*
199             * The userBaseSearch string contains some
200             * characters that need to be transformed.
201             */
202            str = str.replace('/', '=');
203            str = str.replace('%', ',');
204            return str;
205        }
206    
207        /**
208         * Get the value of the property for the Authentication
209         * mechanism. Valid values are: none, simple,
210         * @return the value of the property.
211         */
212        public static String getLDAPAuthentication()
213        {
214            return getProperty(LDAP_AUTH_KEY, LDAP_AUTH_DEFAULT);
215        }
216    
217        /**
218         * Get the value of the User id Attribute.
219         * @return the value of the property.
220         */
221        public static String getUserIdAttribute()
222        {
223            return getProperty(LDAP_USER_USERID_KEY, LDAP_USER_USERID_DEFAULT);
224        }
225    
226        /**
227         * Get the value of the Username Attribute.
228         * @return the value of the property.
229         */
230        public static String getNameAttribute()
231        {
232            return getProperty(LDAP_USER_USERNAME_KEY, LDAP_USER_USERNAME_DEFAULT);
233        }
234    
235        /**
236         * Get the value of the Username Attribute.
237         * @return the value of the property.
238         * @deprecated Use getNameAttribute()
239         */
240        public static String getUserNameAttribute()
241        {
242            return getNameAttribute();
243        }
244    
245        /**
246         * Get the value of the Firstname Attribute.
247         * @return the value of the property.
248         */
249        public static String getFirstNameAttribute()
250        {
251            return getProperty(LDAP_USER_FIRSTNAME_KEY,
252                    LDAP_USER_FIRSTNAME_DEFAULT);
253        }
254    
255        /**
256         * Get the value of the Lastname Attribute.
257         * @return the value of the property.
258         */
259        public static String getLastNameAttribute()
260        {
261            return getProperty(LDAP_USER_LASTNAME_KEY, LDAP_USER_LASTNAME_DEFAULT);
262        }
263    
264        /**
265         * Get the value of the Password Attribute.
266         * @return the value of the property.
267         */
268        public static String getPasswordAttribute()
269        {
270            return getProperty(LDAP_USER_PASSWORD_KEY, LDAP_USER_PASSWORD_DEFAULT);
271        }
272    
273        /**
274         * Get the value of the E-Mail Attribute.
275         * @return the value of the property.
276         */
277        public static String getEmailAttribute()
278        {
279            return getProperty(LDAP_USER_EMAIL_KEY, LDAP_USER_EMAIL_DEFAULT);
280        }
281    
282    }