Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManagement.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManagement.java?rev=1603163&r1=1603162&r2=1603163&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManagement.java (original) +++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManagement.java Tue Jun 17 13:36:24 2014 @@ -22,33 +22,38 @@ import static org.apache.openmeetings.ut import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; import java.io.File; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.HashMap; -import java.util.List; -import java.util.Random; -import java.util.UUID; -import java.util.Vector; - -import org.apache.openmeetings.core.ldap.config.ConfigReader; -import org.apache.openmeetings.core.remote.util.SessionVariablesUtil; +import java.io.FileInputStream; +import java.util.Date; +import java.util.Properties; +import java.util.Set; + +import org.apache.directory.api.ldap.model.cursor.EntryCursor; +import org.apache.directory.api.ldap.model.entry.Attribute; +import org.apache.directory.api.ldap.model.entry.Entry; +import org.apache.directory.api.ldap.model.exception.LdapAuthenticationException; +import org.apache.directory.api.ldap.model.exception.LdapException; +import org.apache.directory.api.ldap.model.exception.LdapInvalidAttributeValueException; +import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException; +import org.apache.directory.api.ldap.model.message.SearchScope; +import org.apache.directory.api.ldap.model.name.Dn; +import org.apache.directory.ldap.client.api.LdapConnection; +import org.apache.directory.ldap.client.api.LdapNetworkConnection; import org.apache.openmeetings.db.dao.basic.ConfigurationDao; import org.apache.openmeetings.db.dao.server.LdapConfigDao; -import org.apache.openmeetings.db.dao.server.SessiondataDao; -import org.apache.openmeetings.db.dao.user.ILdapLoginManagement; -import org.apache.openmeetings.db.dao.user.IUserManager; +import org.apache.openmeetings.db.dao.user.OrganisationDao; import org.apache.openmeetings.db.dao.user.StateDao; import org.apache.openmeetings.db.dao.user.UserDao; -import org.apache.openmeetings.db.entity.room.Client; import org.apache.openmeetings.db.entity.server.LdapConfig; -import org.apache.openmeetings.db.entity.user.State; +import org.apache.openmeetings.db.entity.user.Address; +import org.apache.openmeetings.db.entity.user.Organisation_Users; import org.apache.openmeetings.db.entity.user.User; +import org.apache.openmeetings.db.entity.user.User.Right; import org.apache.openmeetings.db.entity.user.User.Type; import org.apache.openmeetings.db.util.TimezoneUtil; import org.apache.openmeetings.util.OmException; import org.apache.openmeetings.util.OmFileHelper; +import org.apache.wicket.util.string.Strings; import org.red5.logging.Red5LoggerFactory; -import org.red5.server.api.IClient; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; @@ -58,171 +63,94 @@ import org.springframework.beans.factory * @author o.becherer * */ -public class LdapLoginManagement implements ILdapLoginManagement { +public class LdapLoginManagement { private static final Logger log = Red5LoggerFactory.getLogger(LdapLoginManagement.class, webAppRootKey); + // ConfigConstants + private static final String CONFIGKEY_LDAP_HOST = "ldap_conn_host"; + private static final String CONFIGKEY_LDAP_PORT = "ldap_conn_port"; + private static final String CONFIGKEY_LDAP_SECURE = "ldap_conn_secure"; + private static final String CONFIGKEY_LDAP_ADMIN_DN = "ldap_admin_dn"; + private static final String CONFIGKEY_LDAP_ADMIN_PASSWD = "ldap_passwd"; + private static final String CONFIGKEY_LDAP_AUTH_TYPE = "ldap_auth_type"; + private static final String CONFIGKEY_LDAP_PROV_TYPE = "ldap_provisionning"; + + private static final String CONFIGKEY_LDAP_SYNC_PASSWD_OM = "ldap_sync_password_to_om"; // 'true' or 'false' + private static final String CONFIGKEY_LDAP_USE_LOWER_CASE = "ldap_use_lower_case"; + private static final String CONFIGKEY_LDAP_TIMEZONE_NAME = "ldap_user_timezone"; + private static final String CONFIGKEY_LDAP_SEARCH_BASE = "ldap_search_base"; + private static final String CONFIGKEY_LDAP_SEARCH_QUERY = "ldap_search_query"; + private static final String CONFIGKEY_LDAP_USERDN_FORMAT = "ldap_userdn_format"; + private static final String CONFIGKEY_LDAP_USE_ADMIN_4ATTRS = "ldap_use_admin_to_get_attrs"; + + // LDAP custom attribute mapping keys + private static final String CONFIGKEY_LDAP_KEY_LASTNAME = "ldap_user_attr_lastname"; + private static final String CONFIGKEY_LDAP_KEY_FIRSTNAME = "ldap_user_attr_firstname"; + private static final String CONFIGKEY_LDAP_KEY_MAIL = "ldap_user_attr_mail"; + private static final String CONFIGKEY_LDAP_KEY_STREET = "ldap_user_attr_street"; + private static final String CONFIGKEY_LDAP_KEY_ADDITIONAL_NAME = "ldap_user_attr_additionalname"; + private static final String CONFIGKEY_LDAP_KEY_FAX = "ldap_user_attr_fax"; + private static final String CONFIGKEY_LDAP_KEY_ZIP = "ldap_user_attr_zip"; + private static final String CONFIGKEY_LDAP_KEY_COUNTRY = "ldap_user_attr_country"; + private static final String CONFIGKEY_LDAP_KEY_TOWN = "ldap_user_attr_town"; + private static final String CONFIGKEY_LDAP_KEY_PHONE = "ldap_user_attr_phone"; + private static final String CONFIGKEY_LDAP_PICTURE_URI = "ldap_user_picture_uri"; + // LDAP default attributes mapping + private static final String LDAP_KEY_LASTNAME = "sn"; + private static final String LDAP_KEY_FIRSTNAME = "givenName"; + private static final String LDAP_KEY_MAIL = "mail"; + private static final String LDAP_KEY_STREET = "streetAddress"; + private static final String LDAP_KEY_ADDITIONAL_NAME = "description"; + private static final String LDAP_KEY_FAX = "facsimileTelephoneNumber"; + private static final String LDAP_KEY_ZIP = "postalCode"; + private static final String LDAP_KEY_COUNTRY = "co"; + private static final String LDAP_KEY_TOWN = "l"; + private static final String LDAP_KEY_PHONE = "telephoneNumber"; + private static final String LDAP_KEY_TIMEZONE = "timezone"; + private static final String LDAP_KEY_PICTURE_URI = "pictureUri"; + + public enum AuthType { + NONE + , SEARCHANDBIND + , SIMPLEBIND + } + + public enum Provisionning { + NONE + , AUTOUPDATE + , AUTOCREATE + } + @Autowired - private SessiondataDao sessiondataDao; - @Autowired - private ConfigurationDao configurationDao; - @Autowired - private IUserManager userManager; + private ConfigurationDao cfgDao; @Autowired - private StateDao statemanagement; + private StateDao stateDao; @Autowired private LdapConfigDao ldapConfigDao; @Autowired - private UserDao usersDao; + private UserDao userDao; + @Autowired + private OrganisationDao orgDao; @Autowired private TimezoneUtil timezoneUtil; - // ConfigConstants - public static final String CONFIGKEY_LDAP_URL = "ldap_conn_url"; - public static final String CONFIGKEY_LDAP_ADMIN_DN = "ldap_admin_dn"; - public static final String CONFIGKEY_LDAP_ADMIN_PASSWD = "ldap_passwd"; - public static final String CONFIGKEY_LDAP_SEARCH_SCOPE = "ldap_search_base"; - public static final String CONFIGKEY_LDAP_SERVER_TYPE = "ldap_server_type"; // for OpenLDAP use only - public static final String CONFIGKEY_LDAP_AUTH_TYPE = "ldap_auth_type"; - - public static final String CONFIGKEY_LDAP_FIELDNAME_USER_PRINCIPAL = "field_user_principal"; - public static final String CONFIGKEY_LDAP_SYNC_PASSWD_OM = "ldap_sync_password_to_om"; // 'yes' or 'no' - - public static final String CONFIGKEY_LDAP_USE_LOWER_CASE = "ldap_use_lower_case"; - - public static final String CONFIGKEY_LDAP_TIMEZONE_NAME = "ldap_user_timezone"; - - /* - //for future use (lemeur) - public static final String CONFIGKEY_LDAP_USER_EXTRAFILTER = "ldap_user_extrafilter"; - public static final String CONFIGKEY_LDAP_GROUP_FILTER_NUM = "ldap_group_filter_num"; - public static final String CONFIGKEY_LDAP_GROUP_FILTER_NAME_PREFIX = "ldap_group_filter_name_"; - public static final String CONFIGKEY_LDAP_GROUP_FILTER_BASE_PREFIX = "ldap_group_filter_base_"; - public static final String CONFIGKEY_LDAP_GROUP_FILTER_TYPE_PREFIX = "ldap_group_filter_type_"; - public static final String CONFIGKEY_LDAP_GROUP_FILTER_TEXT_PREFIX = "ldap_group_filter_text_"; - */ - public static final String CONFIGKEY_LDAP_FILTER_ADD = "ldap_filter_add"; - - // LDAP default attributes mapping - public static final String LDAP_KEY_LASTNAME = "sn"; - public static final String LDAP_KEY_FIRSTNAME = "givenName"; - public static final String LDAP_KEY_MAIL = "mail"; - public static final String LDAP_KEY_STREET = "streetAddress"; - public static final String LDAP_KEY_ADDITIONAL_NAME = "description"; - public static final String LDAP_KEY_FAX = "facsimileTelephoneNumber"; - public static final String LDAP_KEY_ZIP = "postalCode"; - public static final String LDAP_KEY_COUNTRY = "co"; - public static final String LDAP_KEY_TOWN = "l"; - public static final String LDAP_KEY_PHONE = "telephoneNumber"; - public static final String LDAP_KEY_TIMEZONE = "timezone"; - public static final String LDAP_KEY_PICTURE_URI = "pictureUri"; - - // LDAP custom attribute mapping keys - public static final String CONFIGKEY_LDAP_KEY_LASTNAME = "ldap_user_attr_lastname"; - public static final String CONFIGKEY_LDAP_KEY_FIRSTNAME = "ldap_user_attr_firstname"; - public static final String CONFIGKEY_LDAP_KEY_MAIL = "ldap_user_attr_mail"; - public static final String CONFIGKEY_LDAP_KEY_STREET = "ldap_user_attr_street"; - public static final String CONFIGKEY_LDAP_KEY_ADDITIONAL_NAME = "ldap_user_attr_additionalname"; - public static final String CONFIGKEY_LDAP_KEY_FAX = "ldap_user_attr_fax"; - public static final String CONFIGKEY_LDAP_KEY_ZIP = "ldap_user_attr_zip"; - public static final String CONFIGKEY_LDAP_KEY_COUNTRY = "ldap_user_attr_country"; - public static final String CONFIGKEY_LDAP_KEY_TOWN = "ldap_user_attr_town"; - public static final String CONFIGKEY_LDAP_KEY_PHONE = "ldap_user_attr_phone"; - public static final String CONFIGKEY_LDAP_PICTURE_URI = "ldap_user_picture_uri"; - - /** - * Determine if is a supported Auth Type - * - * @param authType - */ - // ------------------------------------------------------------------------------------------------------- - public static boolean isValidAuthType(String authType) { - log.debug("isValidAuthType"); - - if (authType != null) { - if (!authType.isEmpty()) { - if (authType - .equalsIgnoreCase(LdapAuthBase.LDAP_AUTH_TYPE_SIMPLE)) - return true; - if (authType.equalsIgnoreCase(LdapAuthBase.LDAP_AUTH_TYPE_NONE)) - return true; - } - } - - return false; - + private Dn getUserDn(Properties config, String user) throws LdapInvalidDnException { + return new Dn(String.format(config.getProperty(CONFIGKEY_LDAP_USERDN_FORMAT, "%s"), user)); } - - // ------------------------------------------------------------------------------------------------------- - - /** - * Ldap Password Synch to OM DB set active ? defaults to true in case of - * error so as to keep old behaviour - */ - public boolean getLdapPwdSynchStatus(Long ldapConfigId) { // TIBO - // Retrieve Configuration Data - HashMap<String, String> configData; - - LdapConfig ldapConfig = ldapConfigDao.get(ldapConfigId); - - try { - configData = getLdapConfigData(ldapConfig.getConfigFileName()); - } catch (Exception e) { - log.error("Error on getLdapPwdSynchStatus : " + e.getMessage()); - return true; - } - - if (configData == null || configData.size() < 1) { - log.error("Error on getLdapPwdSynchStatus : Configurationdata couldnt be retrieved!"); - return true; - } - - // Connection URL - String ldap_synch_passwd_to_om = configData - .get(CONFIGKEY_LDAP_SYNC_PASSWD_OM); - if (ldap_synch_passwd_to_om.equals("no")) { - log.debug("getLdapPwdSynchStatus: returns FALSE (val=" - + ldap_synch_passwd_to_om + ")"); - return false; + + private void bindAdmin(LdapConnection conn, String admin, String pass) throws LdapException { + if (!Strings.isEmpty(admin)) { + conn.bind(admin, pass); } else { - log.debug("getLdapPwdSynchStatus: returns TRUE (val=" - + ldap_synch_passwd_to_om + ")"); - return true; + conn.bind(); } } - - /** - * Retrieving LdapData from Config - */ - // ---------------------------------------------------------------------------------------- - public HashMap<String, String> getLdapConfigData(String ldapConfigfileName) - throws Exception { - log.debug("LdapLoginmanagement.getLdapConfigData"); - - return readConfig(new File(OmFileHelper.getConfDir(), ldapConfigfileName)); - } - - // ---------------------------------------------------------------------------------------- - - /** - * Reading Ldap Config via ConfigReader - */ - // ---------------------------------------------------------------------------------------- - private HashMap<String, String> readConfig(File config) - throws Exception { - log.debug("LdapLoginmanagement.readConfig : " + config); - - if (!config.isFile()) - return null; - - ConfigReader reader = new ConfigReader(); - reader.readConfig(config); - - return reader.getConfigMap(); - + + private String getAttr(Properties config, Entry entry, String aliasCode, String defaultAlias) throws LdapInvalidAttributeValueException { + String alias = config.getProperty(aliasCode, ""); + Attribute a = entry.get(Strings.isEmpty(alias) ? defaultAlias : alias); + return a == null ? null : a.getString(); } - - // ---------------------------------------------------------------------------------------- - /** * Ldap Login * @@ -233,543 +161,189 @@ public class LdapLoginManagement impleme public User login(String user, String passwd, Long domainId) throws OmException { log.debug("LdapLoginmanagement.doLdapLogin"); - // Retrieve Configuration Data - HashMap<String, String> configData; - + Properties config = new Properties(); try { - configData = getLdapConfigData(ldapConfigDao.get(domainId).getConfigFileName()); + LdapConfig ldapConfig = ldapConfigDao.get(domainId); + config.load(new FileInputStream(new File(OmFileHelper.getConfDir(), ldapConfig.getConfigFileName()))); } catch (Exception e) { - log.error("Error on LdapAuth : " + e.getMessage()); + log.error("Error on LdapLogin : Configurationdata couldnt be retrieved!"); return null; } - - if (configData == null || configData.size() < 1) { + if (config.isEmpty()) { log.error("Error on LdapLogin : Configurationdata couldnt be retrieved!"); return null; } - // Connection URL - String ldap_url = configData.get(CONFIGKEY_LDAP_URL); - - // for OpenLDAP only - // LDAP SERVER TYPE to search accordingly - String ldap_server_type = configData.get(CONFIGKEY_LDAP_SERVER_TYPE); - - // Username for LDAP SERVER himself - String ldap_admin_dn = configData.get(CONFIGKEY_LDAP_ADMIN_DN); - - // Password for LDAP SERVER himself - String ldap_passwd = configData.get(CONFIGKEY_LDAP_ADMIN_PASSWD); - - // SearchScope for retrievment of userdata - String ldap_search_scope = configData.get(CONFIGKEY_LDAP_SEARCH_SCOPE); - - // FieldName for Users's Principal Name - String ldap_fieldname_user_principal = configData - .get(CONFIGKEY_LDAP_FIELDNAME_USER_PRINCIPAL); - - // Wether or not we'll store Ldap passwd into OM db - boolean ldap_sync_passwd_to_om = "no".equals(configData.get(CONFIGKEY_LDAP_SYNC_PASSWD_OM)); - - /* - //for future use (lemeur) - // Ldap user filter to refine the search - String ldap_user_extrafilter = configData.get(CONFIGKEY_LDAP_USER_EXTRAFILTER); - - // Count of Ldap group filters - String ldap_group_filter_num = configData.get(CONFIGKEY_LDAP_GROUP_FILTER_NUM); - - // Prefix name of Ldap group filter name - String ldap_group_filter_name_prefix = configData.get(CONFIGKEY_LDAP_GROUP_FILTER_NAME_PREFIX); - - // Prefix name of Ldap group filter base - String ldap_group_filter_base_prefix = configData.get(CONFIGKEY_LDAP_GROUP_FILTER_NAME_PREFIX); - - // Prefix name of Ldap group filter type - String ldap_group_filter_type_prefix = configData.get(CONFIGKEY_LDAP_GROUP_FILTER_TYPE_PREFIX); - - // Prefix name of Ldap group filter text - String ldap_group_filter_text_prefix = configData.get(CONFIGKEY_LDAP_GROUP_FILTER_TEXT_PREFIX); - */ - - // Get custom Ldap attributes mapping - String ldap_user_attr_lastname = configData.get(CONFIGKEY_LDAP_KEY_LASTNAME); - String ldap_user_attr_firstname = configData.get(CONFIGKEY_LDAP_KEY_FIRSTNAME); - String ldap_user_attr_mail = configData.get(CONFIGKEY_LDAP_KEY_MAIL); - String ldap_user_attr_street = configData.get(CONFIGKEY_LDAP_KEY_STREET); - String ldap_user_attr_additional_name = configData.get(CONFIGKEY_LDAP_KEY_ADDITIONAL_NAME); - String ldap_user_attr_fax = configData.get(CONFIGKEY_LDAP_KEY_FAX); - String ldap_user_attr_zip = configData.get(CONFIGKEY_LDAP_KEY_ZIP); - String ldap_user_attr_country = configData.get(CONFIGKEY_LDAP_KEY_COUNTRY); - String ldap_user_attr_town = configData.get(CONFIGKEY_LDAP_KEY_TOWN); - String ldap_user_attr_phone = configData.get(CONFIGKEY_LDAP_KEY_PHONE); - String ldap_user_attr_timezone = configData.get(CONFIGKEY_LDAP_TIMEZONE_NAME); - String ldap_user_picture_uri = configData.get(CONFIGKEY_LDAP_PICTURE_URI); - String ldap_use_lower_case = configData.get(CONFIGKEY_LDAP_USE_LOWER_CASE); - String ldap_auth_type = configData.get(CONFIGKEY_LDAP_AUTH_TYPE); - String ldap_filter_add = configData.get(CONFIGKEY_LDAP_FILTER_ADD); - - if (ldap_use_lower_case != null && ldap_use_lower_case.equals("true")) { + String ldap_use_lower_case = config.getProperty(CONFIGKEY_LDAP_USE_LOWER_CASE, "false"); + if ("true".equals(ldap_use_lower_case)) { user = user.toLowerCase(); } - if (ldap_user_attr_lastname == null) { - ldap_user_attr_lastname = LDAP_KEY_LASTNAME; - } - if (ldap_user_attr_firstname == null) { - ldap_user_attr_firstname = LDAP_KEY_FIRSTNAME; - } - if (ldap_user_attr_mail == null) { - ldap_user_attr_mail = LDAP_KEY_MAIL; - } - if (ldap_user_attr_street == null) { - ldap_user_attr_street = LDAP_KEY_STREET; - } - if (ldap_user_attr_additional_name == null) { - ldap_user_attr_additional_name = LDAP_KEY_ADDITIONAL_NAME; - } - if (ldap_user_attr_fax == null) { - ldap_user_attr_fax = LDAP_KEY_FAX; - } - if (ldap_user_attr_zip == null) { - ldap_user_attr_zip = LDAP_KEY_ZIP; - } - if (ldap_user_attr_country == null) { - ldap_user_attr_country = LDAP_KEY_COUNTRY; - } - if (ldap_user_attr_town == null) { - ldap_user_attr_town = LDAP_KEY_TOWN; - } - if (ldap_user_attr_phone == null) { - ldap_user_attr_phone = LDAP_KEY_PHONE; - } - if (ldap_user_attr_timezone == null) { - ldap_user_attr_timezone = LDAP_KEY_TIMEZONE; - } - if (ldap_auth_type == null) { - ldap_auth_type = ""; - } - if (ldap_filter_add == null) { - ldap_filter_add = ""; - } - - if (!isValidAuthType(ldap_auth_type)) { - log.error("ConfigKey in Ldap Config contains invalid auth type : '" - + ldap_auth_type + "' -> Defaulting to " - + LdapAuthBase.LDAP_AUTH_TYPE_SIMPLE); - ldap_auth_type = LdapAuthBase.LDAP_AUTH_TYPE_SIMPLE; - } - - // Filter for Search of UserData - String ldap_search_filter = "(" + ldap_fieldname_user_principal + "=" + user + ")"; - if (!"".equals(ldap_filter_add)) { - ldap_filter_add = ldap_filter_add.replaceAll(":", "="); - ldap_search_filter = "(&(" + ldap_filter_add + ")(" + ldap_fieldname_user_principal + "=" + user + "))"; - } - - log.debug("Searching userdata with LDAP Search Filter :" + ldap_search_filter); - - // replace : -> in config = are replaced by : to be able to build valid - // key=value pairs - ldap_search_scope = ldap_search_scope.replaceAll(":", "="); - ldap_admin_dn = ldap_admin_dn.replaceAll(":", "="); - - LdapAuthBase lAuth = new LdapAuthBase(ldap_url, ldap_admin_dn, ldap_passwd, ldap_auth_type); - - log.debug("authenticating admin..."); - lAuth.authenticateUser(ldap_admin_dn, ldap_passwd); - - log.debug("Checking server type..."); - // for OpenLDAP only - if (ldap_server_type.equalsIgnoreCase("OpenLDAP")) { - String ldapUserDN = user; - log.debug("LDAP server is OpenLDAP"); - log.debug("LDAP search base: " + ldap_search_scope); - HashMap<String, String> uidCnDictionary = lAuth.getUidCnHashMap( - ldap_search_scope, ldap_search_filter, ldap_fieldname_user_principal); - if (uidCnDictionary.get(user) != null) { - ldapUserDN = uidCnDictionary.get(user) + "," + ldap_search_scope; - log.debug("Authentication with DN: " + ldapUserDN); - } - try { - if (!lAuth.authenticateUser(ldapUserDN, passwd)) { - log.error(ldapUserDN + " not authenticated."); - throw new OmException(-11L); - } - } catch (OmException oe) { - throw oe; - } catch (Exception e) { - log.error("Error on LdapAuth : " + e.getMessage()); - return null; - } - } else { - try { - if (!lAuth.authenticateUser(user, passwd)) { - throw new OmException(-11L); - } - } catch (OmException oe) { - throw oe; - } catch (Exception e) { - log.error("Error on LdapAuth : " + e.getMessage()); - return null; - } - } - - // check if user already exists - - User u = null; - + String ldap_auth_type = config.getProperty(CONFIGKEY_LDAP_AUTH_TYPE, ""); + AuthType type = AuthType.SIMPLEBIND; try { - u = usersDao.getByName(user, User.Type.ldap); + type = AuthType.valueOf(ldap_auth_type); } catch (Exception e) { - log.error("Error retrieving Userdata : " + e.getMessage()); + log.error("ConfigKey in Ldap Config contains invalid auth type : '%s' -> Defaulting to %s", ldap_auth_type, type); } - // Attributes to retrieve from ldap to either create or update the user - List<String> attributes = new ArrayList<String>(); - attributes.add(ldap_user_attr_lastname); // Lastname - attributes.add(ldap_user_attr_firstname); // Firstname - attributes.add(ldap_user_attr_mail);// mail - attributes.add(ldap_user_attr_street); // Street - attributes.add(ldap_user_attr_additional_name); // Additional name - attributes.add(ldap_user_attr_fax); // Fax - attributes.add(ldap_user_attr_zip); // ZIP - attributes.add(ldap_user_attr_country); // Country - attributes.add(ldap_user_attr_town); // Town - attributes.add(ldap_user_attr_phone); // Phone - attributes.add(ldap_user_attr_timezone); // timezone - if (ldap_user_picture_uri != null) { - attributes.add(ldap_user_picture_uri); //picture uri + String ldap_prov_type = config.getProperty(CONFIGKEY_LDAP_PROV_TYPE, ""); + Provisionning prov = Provisionning.AUTOCREATE; + try { + prov = Provisionning.valueOf(ldap_prov_type); + } catch (Exception e) { + log.error("ConfigKey in Ldap Config contains invalid provisionning type : '%s' -> Defaulting to %s", ldap_prov_type, prov); } - HashMap<String, String> ldapAttrs = new HashMap<String, String>(); - ldapAttrs.put("lastnameAttr", ldap_user_attr_lastname); - ldapAttrs.put("firstnameAttr", ldap_user_attr_firstname); - ldapAttrs.put("mailAttr", ldap_user_attr_mail); - ldapAttrs.put("streetAttr", ldap_user_attr_street); - ldapAttrs.put("additionalNameAttr", ldap_user_attr_additional_name); - ldapAttrs.put("faxAttr", ldap_user_attr_fax); - ldapAttrs.put("zipAttr", ldap_user_attr_zip); - ldapAttrs.put("countryAttr", ldap_user_attr_country); - ldapAttrs.put("townAttr", ldap_user_attr_town); - ldapAttrs.put("phoneAttr", ldap_user_attr_phone); - ldapAttrs.put("timezoneAttr", ldap_user_attr_timezone); - if (ldap_user_picture_uri != null) { - ldapAttrs.put("pictureUri", ldap_user_picture_uri); + if (AuthType.NONE == type && Provisionning.NONE == prov) { + log.error("Both AuthType and Provisionning are NONE!"); + return null; } - - Vector<HashMap<String, String>> result = lAuth.getData( - ldap_search_scope, ldap_search_filter, attributes); - - if (result == null || result.size() < 1) { - log.error("Error on Ldap request - no result for user " + user); - throw new OmException(-10L); + boolean useAdminForAttrs = true; + try { + useAdminForAttrs = "true".equals(config.getProperty(CONFIGKEY_LDAP_USE_ADMIN_4ATTRS, "")); + } catch (Exception e) { + //no-op } - - if (result.size() > 1) { - log.error("Error on Ldap request - more than one result for user " + user); + if (AuthType.NONE == type && !useAdminForAttrs) { + log.error("Unable to get Attributes, please change Auth type and/or Use Admin to get attributes"); return null; } - - HashMap<String, String> userData = result.get(0); + // Connection URL + String ldap_host = config.getProperty(CONFIGKEY_LDAP_HOST); + int ldap_port = Integer.parseInt(config.getProperty(CONFIGKEY_LDAP_PORT, "389")); + boolean ldap_secure = "true".equals(config.getProperty(CONFIGKEY_LDAP_SECURE, "false")); - // User not existant in local database -> take over data for referential - // integrity - if (u == null) { - log.debug("user doesnt exist local -> create new"); - - try { - // Create User with LdapData - Long userid; - if (ldap_sync_passwd_to_om) { - Random r = new Random(); - String token = UUID.randomUUID().toString() + Long.toString(Math.abs(r.nextLong()), 36); - log.debug("Synching Ldap user to OM DB with RANDOM password: " + token); - userid = createUserFromLdapData(userData, token, user, ldapAttrs); - } else { - log.debug("Synching Ldap user to OM DB with password"); - userid = createUserFromLdapData(userData, passwd, user, ldapAttrs); - } - log.debug("New User ID : " + userid); + // Username for LDAP SERVER himself + String ldap_admin_dn = config.getProperty(CONFIGKEY_LDAP_ADMIN_DN); - // Return UserObject - User u2 = usersDao.get(userid); + // Password for LDAP SERVER himself + String ldap_admin_passwd = config.getProperty(CONFIGKEY_LDAP_ADMIN_PASSWD); - if (u2 == null) { - throw new OmException(-1L); + User u = null; + LdapConnection conn = null; + try { + boolean authenticated = true; + conn = new LdapNetworkConnection(ldap_host, ldap_port, ldap_secure); + Dn userDn = null; + Entry entry = null; + switch (type) { + case SEARCHANDBIND: + { + bindAdmin(conn, ldap_admin_dn, ldap_admin_passwd); + Dn baseDn = new Dn(config.getProperty(CONFIGKEY_LDAP_SEARCH_BASE, "")); + String searchQ = String.format(config.getProperty(CONFIGKEY_LDAP_SEARCH_QUERY, "%s"), user); + EntryCursor cursor = conn.search(baseDn, searchQ, SearchScope.ONELEVEL, "*"); + while (cursor.next()) { + if (userDn != null) { + throw new OmException(-1L); //more than 1 user found in LDAP + } + Entry e = cursor.get(); + userDn = e.getDn(); + if (useAdminForAttrs) { + entry = e; + } + } + cursor.close(); + if (userDn == null) { + throw new OmException(-11L); //NONE users found in LDAP + } + conn.bind(userDn, passwd); } - - u2.setType(Type.ldap); - - // initialize lazy collection - usersDao.update(u2, u2.getUser_id()); - - log.debug("getUserbyId : " + userid + " : " + u2.getLogin()); - - return u2; - } catch (Exception e) { - log.error("Error on Working Userdata : ", e); - throw new OmException(-1L); - } - } else { - // User exists, just update necessary values - log.debug("User already exists -> Update of current passwd"); - - try { - // Update password (could have changed in LDAP) - if (ldap_sync_passwd_to_om) { - u.updatePassword(configurationDao, passwd); + break; + case SIMPLEBIND: + { + userDn = getUserDn(config, user); + conn.bind(userDn, passwd); } - - //update all other attributes in case ldap provides some and the parameter is configured - updateUserFromLdap(userData, ldapAttrs, u); - - usersDao.update(u, null); - } catch (Exception e) { - log.error("Error updating user : " + e.getMessage()); - throw new OmException(-1L); - } - - return u; - - } - } - - // ---------------------------------------------------------------------------------------- - - /** - * Creation on User with LDAP - Data AutoCreation of Country if does not exist - * Added to default organization - */ - // ---------------------------------------------------------------------------------------- - private Long createUserFromLdapData(HashMap<String, String> userdata, - String passwd, String login, HashMap<String, String> ldapAttrs) - throws Exception { - log.debug("LdapLoginmanagement.createUserFromLdapData"); - - // Retrieve Data from LDAP - Data - - String lastname = "lastname"; - if (userdata.containsKey(ldapAttrs.get("lastnameAttr")) - && userdata.get(ldapAttrs.get("lastnameAttr")) != null) - lastname = userdata.get(ldapAttrs.get("lastnameAttr")); - - String firstname = "firstname"; - if (userdata.containsKey(ldapAttrs.get("firstnameAttr")) - && userdata.get(ldapAttrs.get("firstnameAttr")) != null) - firstname = userdata.get(ldapAttrs.get("firstnameAttr")); - - String email = "email"; - if (userdata.containsKey(ldapAttrs.get("mailAttr")) - && userdata.get(ldapAttrs.get("mailAttr")) != null) - email = userdata.get(ldapAttrs.get("mailAttr")); - - String street = "street"; - if (userdata.containsKey(ldapAttrs.get("streetAttr")) - && userdata.get(ldapAttrs.get("streetAttr")) != null) - street = userdata.get(ldapAttrs.get("streetAttr")); - - String additionalname = "additionalname"; - if (userdata.containsKey(ldapAttrs.get("additionalNameAttr")) - && userdata.get(ldapAttrs.get("additionalNameAttr")) != null) - additionalname = userdata.get(ldapAttrs.get("additionalNameAttr")); - - String fax = "fax"; - if (userdata.containsKey(ldapAttrs.get("faxAttr")) - && userdata.get(ldapAttrs.get("faxAttr")) != null) - fax = userdata.get(ldapAttrs.get("faxAttr")); - - String zip = "zip"; - if (userdata.containsKey(ldapAttrs.get("zipAttr")) - && userdata.get(ldapAttrs.get("zipAttr")) != null) - zip = userdata.get(ldapAttrs.get("zipAttr")); - - long state_id = -1; - String state = null; - if (userdata.containsKey(ldapAttrs.get("countryAttr")) - && userdata.get(ldapAttrs.get("countryAttr")) != null) - state = userdata.get(ldapAttrs.get("countryAttr")); - - if (state != null) { - // Lookup for states - State oneState = statemanagement.getStateByName(state); - if (oneState != null) { - state_id = oneState.getState_id(); + break; + case NONE: + default: + authenticated = false; + break; + } + u = authenticated ? userDao.getByName(user, Type.ldap) : userDao.login(user, passwd); + if (u == null && Provisionning.AUTOCREATE != prov) { + throw new OmException(-11L); + } else if (u != null && !domainId.equals(u.getDomainId())) { + throw new OmException(-11L); + } + if (authenticated && entry == null) { + if (useAdminForAttrs) { + bindAdmin(conn, ldap_admin_dn, ldap_admin_passwd); + } + entry = conn.lookup(userDn); } - } - - // Create Country - if (state_id < 0) { - Long id = statemanagement.addState(state); - if (id != null) - state_id = id; - - } - - - String phone = "phone"; - if (userdata.containsKey(ldapAttrs.get("phoneAttr")) - && userdata.get(ldapAttrs.get("phoneAttr")) != null) - phone = userdata.get(ldapAttrs.get("phoneAttr")); - - String pictureUri = "pictureUri"; - if (userdata.containsKey(ldapAttrs.get("pictureUri")) - && userdata.get(ldapAttrs.get("pictureUri")) != null) - pictureUri = userdata.get(ldapAttrs.get("pictureUri")); - - String iCalTz = ""; - if (userdata.containsKey(ldapAttrs.get("timezoneAttr")) && userdata.get(ldapAttrs.get("timezoneAttr")) != null) { - iCalTz = userdata.get(ldapAttrs.get("timezoneAttr")); - } - - String town = "town"; - if (userdata.containsKey(ldapAttrs.get("townAttr")) - && userdata.get(ldapAttrs.get("townAttr")) != null) - town = userdata.get(ldapAttrs.get("townAttr")); - - Long newUserId = null; - - try { - - // Check if LDAP Users get a SIP Account Issue 1099 - - newUserId = userManager.registerUserInit( - UserDao.getDefaultRights(), login,// loginname - passwd,// passwd - lastname, firstname, email, - new java.util.Date(), //age - street, - additionalname, fax, zip, state_id, town, - configurationDao.getConfValue(CONFIG_DEFAUT_LANG_KEY, Long.class, "1"), // language_id - false, // sendWelcomeMessage - Arrays.asList(configurationDao.getConfValue("default_domain_id", Long.class, null)), // organozation Ids - phone, - false, - false,// send verification code - timezoneUtil.getTimeZone(iCalTz), - false, // forceTimeZoneCheck - "", //userOffers - "", //userSearchs - false, //showContactData - true, //showContactDataToContacts - null - ); - - User user = usersDao.get(newUserId); - user.setPictureuri(pictureUri); - usersDao.update(user, null); - + switch (prov) { + case AUTOUPDATE: + case AUTOCREATE: + if (entry == null) { + throw new OmException(-11L); + } + if (u == null) { + Set<Right> rights = UserDao.getDefaultRights(); + rights.remove(Right.Login); + + u = new User(); + u.setType(Type.ldap); + u.setRights(rights); + u.setDomainId(domainId); + u.getOrganisation_users().add(new Organisation_Users(orgDao.get(cfgDao.getConfValue("default_domain_id", Long.class, "-1")))); + u.setLogin(user); + u.setAge(new Date()); + u.setShowContactDataToContacts(true); + u.setAdresses(new Address()); + u.setLanguage_id(cfgDao.getConfValue(CONFIG_DEFAUT_LANG_KEY, Long.class, "1")); + u.setSalutations_id(1L); + } + if ("true".equals(config.getProperty(CONFIGKEY_LDAP_SYNC_PASSWD_OM, ""))) { + u.updatePassword(cfgDao, passwd); + } + u.setLastname(getAttr(config, entry, CONFIGKEY_LDAP_KEY_LASTNAME, LDAP_KEY_LASTNAME)); + u.setFirstname(getAttr(config, entry, CONFIGKEY_LDAP_KEY_FIRSTNAME, LDAP_KEY_FIRSTNAME)); + u.getAdresses().setEmail(getAttr(config, entry, CONFIGKEY_LDAP_KEY_MAIL, LDAP_KEY_MAIL)); + u.getAdresses().setStreet(getAttr(config, entry, CONFIGKEY_LDAP_KEY_STREET, LDAP_KEY_STREET)); + u.getAdresses().setAdditionalname(getAttr(config, entry, CONFIGKEY_LDAP_KEY_ADDITIONAL_NAME, LDAP_KEY_ADDITIONAL_NAME)); + u.getAdresses().setFax(getAttr(config, entry, CONFIGKEY_LDAP_KEY_FAX, LDAP_KEY_FAX)); + u.getAdresses().setZip(getAttr(config, entry, CONFIGKEY_LDAP_KEY_ZIP, LDAP_KEY_ZIP)); + u.getAdresses().setStates(stateDao.getStateByName(getAttr(config, entry, CONFIGKEY_LDAP_KEY_COUNTRY, LDAP_KEY_COUNTRY))); + u.getAdresses().setTown(getAttr(config, entry, CONFIGKEY_LDAP_KEY_TOWN, LDAP_KEY_TOWN)); + u.getAdresses().setPhone(getAttr(config, entry, CONFIGKEY_LDAP_KEY_PHONE, LDAP_KEY_PHONE)); + String tz = getAttr(config, entry, CONFIGKEY_LDAP_TIMEZONE_NAME, LDAP_KEY_TIMEZONE); + if (tz == null) { + tz = config.getProperty(CONFIGKEY_LDAP_TIMEZONE_NAME, null); + } + u.setTimeZoneId(timezoneUtil.getTimeZone(tz).getID()); + String picture = getAttr(config, entry, CONFIGKEY_LDAP_PICTURE_URI, LDAP_KEY_PICTURE_URI); + if (picture == null) { + picture = config.getProperty(CONFIGKEY_LDAP_PICTURE_URI, null); + } + u.setPictureuri(picture); + + u = userDao.update(u, null); + break; + case NONE: + default: + break; + } + } catch (LdapAuthenticationException ae) { + log.error("Not authenticated.", ae); + throw new OmException(-11L); + } catch (OmException e) { + throw e; } catch (Exception e) { - log.error("Error creating user : " + e.getMessage()); - } - - if (newUserId == -1) { - log.error("Error occured creating user"); - } else if (newUserId == -15) { - log.error("Error creating user : username already exists!"); - } else if (newUserId == -17) { - log.error("Error creating user : email already exists!"); - } else if (newUserId == -3) { - log.error("Error creating user : missing values"); - } else { - log.debug("User Created!"); - } - - return newUserId; - } - - public void updateUserFromLdap(HashMap<String, String> userdata, - HashMap<String, String> ldapAttrs, User user) - throws Exception { - log.debug("LdapLoginmanagement.createUserFromLdapData"); - - // Retrieve Data from LDAP - Data - - if (userdata.containsKey(ldapAttrs.get("lastnameAttr")) && userdata.get(ldapAttrs.get("lastnameAttr")) != null) - user.setLastname(userdata.get(ldapAttrs.get("lastnameAttr"))); - - if (userdata.containsKey(ldapAttrs.get("firstnameAttr")) && userdata.get(ldapAttrs.get("firstnameAttr")) != null) - user.setFirstname(userdata.get(ldapAttrs.get("firstnameAttr"))); - - if (userdata.containsKey(ldapAttrs.get("mailAttr")) && userdata.get(ldapAttrs.get("mailAttr")) != null) { - if (user.getAdresses() != null) { - user.getAdresses().setEmail(userdata.get(ldapAttrs.get("mailAttr"))); - } - } - - if (userdata.containsKey(ldapAttrs.get("streetAttr")) && userdata.get(ldapAttrs.get("streetAttr")) != null) { - if (user.getAdresses() != null) { - user.getAdresses().setStreet(userdata.get(ldapAttrs.get("streetAttr"))); - } - } - - if (userdata.containsKey(ldapAttrs.get("additionalNameAttr")) && userdata.get(ldapAttrs.get("additionalNameAttr")) != null) { - if (user.getAdresses() != null) { - user.getAdresses().setAdditionalname(userdata.get(ldapAttrs.get("additionalNameAttr"))); - } - } - - if (userdata.containsKey(ldapAttrs.get("faxAttr")) && userdata.get(ldapAttrs.get("faxAttr")) != null) { - if (user.getAdresses() != null) { - user.getAdresses().setFax(userdata.get(ldapAttrs.get("faxAttr"))); - } - } - - if (userdata.containsKey(ldapAttrs.get("zipAttr")) && userdata.get(ldapAttrs.get("zipAttr")) != null) { - if (user.getAdresses() != null) { - user.getAdresses().setZip(userdata.get(ldapAttrs.get("zipAttr"))); - } - } - - long state_id = -1; - String state = null; - if (userdata.containsKey(ldapAttrs.get("countryAttr")) && userdata.get(ldapAttrs.get("countryAttr")) != null) { - state = userdata.get(ldapAttrs.get("countryAttr")); - } - - if (state != null) { - // Lookup for states - State oneState = statemanagement.getStateByName(state); - if (oneState != null) { - state_id = oneState.getState_id(); - } - } - // Create Country if not found - if (state_id < 0) { - Long id = statemanagement.addState(state); - if (id != null) { - state_id = id; - } - - } - if (user.getAdresses() != null && state_id > 0) { - user.getAdresses().setStates(statemanagement.getStateById(state_id)); - } - - if (userdata.containsKey(ldapAttrs.get("townAttr")) && userdata.get(ldapAttrs.get("townAttr")) != null) { - if (user.getAdresses() != null) { - user.getAdresses().setTown(userdata.get(ldapAttrs.get("townAttr"))); - } - } - - if (userdata.containsKey(ldapAttrs.get("phoneAttr")) && userdata.get(ldapAttrs.get("phoneAttr")) != null) { - if (user.getAdresses() != null) { - user.getAdresses().setPhone(userdata.get(ldapAttrs.get("phoneAttr"))); + throw new OmException(e); + } finally { + if (conn != null) { + try { + conn.unBind(); + conn.close(); + } catch (Exception e) { + throw new OmException(e); + } } } - - if (userdata.containsKey(ldapAttrs.get("pictureUri")) && userdata.get(ldapAttrs.get("pictureUri")) != null) { - user.setPictureuri(userdata.get(ldapAttrs.get("pictureUri"))); - } - - String iCalTz = ""; - if (userdata.containsKey(ldapAttrs.get("timezoneAttr")) && userdata.get(ldapAttrs.get("timezoneAttr")) != null) { - iCalTz = userdata.get(ldapAttrs.get("timezoneAttr")); - } - - iCalTz = timezoneUtil.getTimeZone(iCalTz).getID(); - user.setTimeZoneId(iCalTz); + return u; } - }
Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java?rev=1603163&r1=1603162&r2=1603163&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java (original) +++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/ConferenceLibrary.java Tue Jun 17 13:36:24 2014 @@ -23,7 +23,6 @@ import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.Map; -import java.util.Set; import org.apache.commons.transaction.util.FileHelper; import org.apache.openmeetings.core.data.whiteboard.WhiteboardManager; Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/FLVRecorderService.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/FLVRecorderService.java?rev=1603163&r1=1603162&r2=1603163&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/FLVRecorderService.java (original) +++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/FLVRecorderService.java Tue Jun 17 13:36:24 2014 @@ -22,7 +22,6 @@ import static org.apache.openmeetings.ut import java.util.Date; import java.util.Map; -import java.util.Set; import java.util.concurrent.ConcurrentHashMap; import org.apache.openmeetings.core.converter.BaseConverter; Modified: openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/InvitationService.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/InvitationService.java?rev=1603163&r1=1603162&r2=1603163&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/InvitationService.java (original) +++ openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/remote/InvitationService.java Tue Jun 17 13:36:24 2014 @@ -21,8 +21,6 @@ package org.apache.openmeetings.core.rem import static org.apache.openmeetings.util.OpenmeetingsVariables.webAppRootKey; import java.util.Calendar; -import java.util.Date; -import java.util.TimeZone; import org.apache.openmeetings.db.dao.basic.ConfigurationDao; import org.apache.openmeetings.db.dao.room.IInvitationManager; Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java?rev=1603163&r1=1603162&r2=1603163&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java (original) +++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/basic/ConfigurationDao.java Tue Jun 17 13:36:24 2014 @@ -32,7 +32,6 @@ import java.util.Arrays; import java.util.Date; import java.util.List; -import javax.annotation.Resource; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.TypedQuery; Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/LdapConfigDao.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/LdapConfigDao.java?rev=1603163&r1=1603162&r2=1603163&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/LdapConfigDao.java (original) +++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/LdapConfigDao.java Tue Jun 17 13:36:24 2014 @@ -34,7 +34,6 @@ import org.apache.openmeetings.db.dao.ID import org.apache.openmeetings.db.dao.user.UserDao; import org.apache.openmeetings.db.entity.server.LdapConfig; import org.apache.openmeetings.util.DaoHelper; -import org.apache.openmeetings.util.OpenmeetingsVariables; import org.red5.logging.Red5LoggerFactory; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; Modified: openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ServerDao.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ServerDao.java?rev=1603163&r1=1603162&r2=1603163&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ServerDao.java (original) +++ openmeetings/trunk/singlewebapp/openmeetings-db/src/main/java/org/apache/openmeetings/db/dao/server/ServerDao.java Tue Jun 17 13:36:24 2014 @@ -32,7 +32,6 @@ import org.apache.openmeetings.db.dao.ID import org.apache.openmeetings.db.dao.user.UserDao; import org.apache.openmeetings.db.entity.server.Server; import org.apache.openmeetings.util.DaoHelper; -import org.apache.openmeetings.util.OpenmeetingsVariables; import org.red5.logging.Red5LoggerFactory; import org.slf4j.Logger; import org.springframework.beans.factory.annotation.Autowired; Modified: openmeetings/trunk/singlewebapp/openmeetings-screenshare/pom.xml URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-screenshare/pom.xml?rev=1603163&r1=1603162&r2=1603163&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-screenshare/pom.xml (original) +++ openmeetings/trunk/singlewebapp/openmeetings-screenshare/pom.xml Tue Jun 17 13:36:24 2014 @@ -46,6 +46,12 @@ <groupId>org.red5</groupId> <artifactId>red5-io</artifactId> <version>1.0.3</version> + <exclusions> + <exclusion> + <groupId>org</groupId> + <artifactId>jaudiotagger</artifactId> + </exclusion> + </exclusions> </dependency> <dependency><!-- FIXME should be removed later --> <groupId>org.red5</groupId> Modified: openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmException.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmException.java?rev=1603163&r1=1603162&r2=1603163&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmException.java (original) +++ openmeetings/trunk/singlewebapp/openmeetings-util/src/main/java/org/apache/openmeetings/util/OmException.java Tue Jun 17 13:36:24 2014 @@ -1,3 +1,21 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License") + you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ package org.apache.openmeetings.util; public class OmException extends Exception { @@ -12,6 +30,10 @@ public class OmException extends Excepti this.code = code; } + public OmException(Throwable cause) { + super(cause); + } + public Long getCode() { return code; } Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java?rev=1603163&r1=1603162&r2=1603163&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java (original) +++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/WebSession.java Tue Jun 17 13:36:24 2014 @@ -40,12 +40,12 @@ import java.util.Set; import java.util.TimeZone; import org.apache.openmeetings.core.IWebSession; +import org.apache.openmeetings.core.ldap.LdapLoginManagement; import org.apache.openmeetings.db.dao.basic.ConfigurationDao; import org.apache.openmeetings.db.dao.label.FieldLanguageDao; import org.apache.openmeetings.db.dao.label.FieldLanguagesValuesDao; import org.apache.openmeetings.db.dao.server.SOAPLoginDao; import org.apache.openmeetings.db.dao.server.SessiondataDao; -import org.apache.openmeetings.db.dao.user.ILdapLoginManagement; import org.apache.openmeetings.db.dao.user.StateDao; import org.apache.openmeetings.db.dao.user.UserDao; import org.apache.openmeetings.db.entity.label.FieldLanguage; @@ -251,7 +251,7 @@ public class WebSession extends Abstract User u = null; switch (type) { case ldap: - u = getBean(ILdapLoginManagement.class).login(login, password, domainId); + u = getBean(LdapLoginManagement.class).login(login, password, domainId); break; case user: /* we will allow login against internal DB in case user 'guess' LDAP password */ Modified: openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/conf/om_ldap.cfg URL: http://svn.apache.org/viewvc/openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/conf/om_ldap.cfg?rev=1603163&r1=1603162&r2=1603163&view=diff ============================================================================== --- openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/conf/om_ldap.cfg (original) +++ openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/conf/om_ldap.cfg Tue Jun 17 13:36:24 2014 @@ -20,51 +20,50 @@ #ConfigKey 'ldap_config_path' must be set in DataBase Configration of OM and point to this file #o.becherer,14.01.2009 -#specify the LDAP Server type -# This parameter specifies the type of LDAP server your are defining -# -# Supported values are "OpenLDAP" and "AD" for Active Directory (defaults to AD). -ldap_server_type=OpenLDAP - #LDAP URL # This is the URL used to access your LDAP server. - -# can be a simple URL like: -# ldap_conn_url=ldap://myldap.myorg.com -# or a list of simple URL separated by a space as in: -# ldap_conn_url=ldap://myldap.myorg.com ldap://myldap2.myorg.com # if you want to use "ldaps://" links, please be aware that you need to import your CA certificate # to a java keystore and add the -Djavax.net.ssl.keyStore, -Djavax.net.ssl.keyStorePassword, # -Djavax.net.ssl.trustStore and -Djavax.net.ssl.trustStorePassword parameters to your # JAVA_OPT environment -ldap_conn_url=ldap://dc2.medint.local:389 - -#Login distinguished name (DN) for Authentification on LDAP Server - keep emtpy if not requiered -# Use DN with with ":" instead of "=". The conversion will be done in OM -ldap_admin_dn=CN:dummy,OU:external users,OU:Other,DC:medint,DC:local +ldap_conn_host=dc2.medint.local +ldap_conn_port=389 +ldap_conn_secure=false + +# Login distinguished name (DN) for Authentication on LDAP Server - keep empty if not required +# Use full qualified LDAP DN +ldap_admin_dn=CN=dummy,OU=Company,DC=medint,DC=local -#Loginpass for Authentification on LDAP Server - keep emtpy if not requiered +# Loginpass for Authentication on LDAP Server - keep empty if not required ldap_passwd=dummy07 -#base to search for userdata(of user, that wants to login) -# Use DN with with ":" instead of "=". The conversion will be done in OM -ldap_search_base=OU:Company,DC:medint,DC:local +# base to search for userdata(of user, that wants to login) +ldap_search_base=OU=Company,DC=medint,DC=local # Fieldnames (can differ between Ldap servers) -field_user_principal=uid +ldap_search_query=(uid=%s) -# Ldap auth type(SIMPLE,NONE) -# When using SIMPLE a simple bind is performed on the LDAP server to check user authentication +# Ldap auth type(NONE, SEARCHANDBIND, SIMPLEBIND) +# When using SIMPLEBIND a simple bind is performed on the LDAP server to check user authentication # When using NONE, the Ldap server is not used for authentication -ldap_auth_type=SIMPLE +ldap_auth_type=SIMPLEBIND -# Ldap-password synchronization to OM DB -# Set this to 'yes' if you want OM to synchronize the user Ldap-password to OM's internal DB -# This enables local login of users if the ldap server is offline. -# If you want to disable the feature, set this to 'no'. -# Defautl value is 'yes' -ldap_sync_password_to_om=yes +# userDN format, will be used to bind if ldap_auth_type=SIMPLEBIND +# might be used to get provisionningDn in case ldap_auth_type=NONE +ldap_userdn_format=uid=%s,OU=Company,DC=medint,DC=local + +# Ldap provisioning type(NONE, AUTOCREATE, AUTOUPDATE) +ldap_provisionning=AUTOCREATE + +# Set this to 'true' if you want to use admin_dn to get user attributes +# If any other value is set, user_dn will be used +ldap_use_admin_to_get_attrs=true +# Ldap-password synchronization to OM DB +# Set this to 'true' if you want OM to synchronize the user Ldap-password to OM's internal DB +# If you want to disable the feature, set this to any other string. +# Defautl value is 'true' +ldap_sync_password_to_om=true # Ldap user attributes mapping # Set the following internal OM user attributes to their corresponding Ldap-attribute @@ -83,8 +82,8 @@ ldap_user_attr_phone=telephoneNumber #ldap_user_picture_uri=picture_uri # optional -# the timezone has to mach an entry in the OpenMeetings table "omtimezones" otherwise the user will get -# the timezone defined in the value of the conf_key "default.timezone" in OpenMeetings "configurations" table +# the timezone has to match any timezone available in Java, otherwise the timezone defined in the value of +# the conf_key "default.timezone" in OpenMeetings "configurations" table #ldap_user_timezone=timezone # Ldap ignore upper/lower case, convert all input to lower case
