You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openmeetings.apache.org by so...@apache.org on 2014/10/17 19:48:00 UTC
svn commit: r1632641 - in /openmeetings:
branches/3.0.x/src/main/java/org/apache/openmeetings/ldap/
branches/3.0.x/src/main/webapp/conf/
trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/
trunk/singlewebapp/openmeetin...
Author: solomax
Date: Fri Oct 17 17:48:00 2014
New Revision: 1632641
URL: http://svn.apache.org/r1632641
Log:
[OPENMEETINGS-1105] parameter to specify deref mode is added
Modified:
openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java
openmeetings/branches/3.0.x/src/main/webapp/conf/om_ldap.cfg
openmeetings/trunk/singlewebapp/openmeetings-core/src/main/java/org/apache/openmeetings/core/ldap/LdapLoginManagement.java
openmeetings/trunk/singlewebapp/openmeetings-web/src/main/webapp/conf/om_ldap.cfg
Modified: openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java?rev=1632641&r1=1632640&r2=1632641&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java (original)
+++ openmeetings/branches/3.0.x/src/main/java/org/apache/openmeetings/ldap/LdapLoginManagement.java Fri Oct 17 17:48:00 2014
@@ -37,8 +37,11 @@ import org.apache.directory.api.ldap.mod
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.AliasDerefMode;
+import org.apache.directory.api.ldap.model.message.SearchRequestImpl;
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.EntryCursorImpl;
import org.apache.directory.ldap.client.api.LdapConnection;
import org.apache.directory.ldap.client.api.LdapNetworkConnection;
import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
@@ -68,7 +71,7 @@ import org.springframework.beans.factory
*/
public class LdapLoginManagement {
private static final Logger log = Red5LoggerFactory.getLogger(LdapLoginManagement.class, webAppRootKey);
- // ConfigConstants
+ // Config constants
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";
@@ -85,6 +88,7 @@ public class LdapLoginManagement {
private static final String CONFIGKEY_LDAP_SEARCH_SCOPE = "ldap_search_scope";
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";
+ private static final String CONFIGKEY_LDAP_DEREF_MODE = "ldap_deref_mode";
// LDAP custom attribute mapping keys
private static final String CONFIGKEY_LDAP_KEY_LASTNAME = "ldap_user_attr_lastname";
@@ -199,7 +203,7 @@ public class LdapLoginManagement {
try {
type = AuthType.valueOf(ldap_auth_type);
} catch (Exception e) {
- log.error("ConfigKey in Ldap Config contains invalid auth type : '%s' -> Defaulting to %s", ldap_auth_type, type);
+ log.error(String.format("ConfigKey in Ldap Config contains invalid auth type : '%s' -> Defaulting to %s", ldap_auth_type, type));
}
String ldap_prov_type = config.getProperty(CONFIGKEY_LDAP_PROV_TYPE, "");
@@ -207,7 +211,15 @@ public class LdapLoginManagement {
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);
+ log.error(String.format("ConfigKey in Ldap Config contains invalid provisionning type : '%s' -> Defaulting to %s", ldap_prov_type, prov));
+ }
+
+ String ldap_deref_mode = config.getProperty(CONFIGKEY_LDAP_DEREF_MODE, "");
+ AliasDerefMode derefMode = AliasDerefMode.DEREF_ALWAYS;
+ try {
+ derefMode = AliasDerefMode.getDerefMode(ldap_deref_mode);
+ } catch (Exception e) {
+ log.error(String.format("ConfigKey in Ldap Config contains invalid deref mode : '%s' -> Defaulting to %s", ldap_deref_mode, derefMode));
}
if (AuthType.NONE == type && Provisionning.NONE == prov) {
@@ -250,7 +262,14 @@ public class LdapLoginManagement {
Dn baseDn = new Dn(config.getProperty(CONFIGKEY_LDAP_SEARCH_BASE, ""));
String searchQ = String.format(config.getProperty(CONFIGKEY_LDAP_SEARCH_QUERY, "%s"), user);
SearchScope scope = SearchScope.valueOf(config.getProperty(CONFIGKEY_LDAP_SEARCH_SCOPE, SearchScope.ONELEVEL.name()));
- EntryCursor cursor = conn.search(baseDn, searchQ, scope, "*");
+
+ EntryCursor cursor = new EntryCursorImpl(conn.search(
+ new SearchRequestImpl()
+ .setBase(baseDn)
+ .setFilter(searchQ)
+ .setScope(scope)
+ .addAttributes("*")
+ .setDerefAliases(derefMode)));
while (cursor.next()) {
try {
Entry e = cursor.get();
Modified: openmeetings/branches/3.0.x/src/main/webapp/conf/om_ldap.cfg
URL: http://svn.apache.org/viewvc/openmeetings/branches/3.0.x/src/main/webapp/conf/om_ldap.cfg?rev=1632641&r1=1632640&r2=1632641&view=diff
==============================================================================
--- openmeetings/branches/3.0.x/src/main/webapp/conf/om_ldap.cfg (original)
+++ openmeetings/branches/3.0.x/src/main/webapp/conf/om_ldap.cfg Fri Oct 17 17:48:00 2014
@@ -58,6 +58,9 @@ ldap_userdn_format=uid=%s,OU=Company,DC=
# Ldap provisioning type(NONE, AUTOCREATE, AUTOUPDATE)
ldap_provisionning=AUTOCREATE
+# Ldap deref mode (never, searching, finding, always)
+ldap_deref_mode=always
+
# 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
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=1632641&r1=1632640&r2=1632641&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 Fri Oct 17 17:48:00 2014
@@ -37,8 +37,11 @@ import org.apache.directory.api.ldap.mod
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.AliasDerefMode;
+import org.apache.directory.api.ldap.model.message.SearchRequestImpl;
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.EntryCursorImpl;
import org.apache.directory.ldap.client.api.LdapConnection;
import org.apache.directory.ldap.client.api.LdapNetworkConnection;
import org.apache.openmeetings.db.dao.basic.ConfigurationDao;
@@ -68,7 +71,7 @@ import org.springframework.beans.factory
*/
public class LdapLoginManagement {
private static final Logger log = Red5LoggerFactory.getLogger(LdapLoginManagement.class, webAppRootKey);
- // ConfigConstants
+ // Config constants
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";
@@ -85,6 +88,7 @@ public class LdapLoginManagement {
private static final String CONFIGKEY_LDAP_SEARCH_SCOPE = "ldap_search_scope";
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";
+ private static final String CONFIGKEY_LDAP_DEREF_MODE = "ldap_deref_mode";
// LDAP custom attribute mapping keys
private static final String CONFIGKEY_LDAP_KEY_LASTNAME = "ldap_user_attr_lastname";
@@ -199,7 +203,7 @@ public class LdapLoginManagement {
try {
type = AuthType.valueOf(ldap_auth_type);
} catch (Exception e) {
- log.error("ConfigKey in Ldap Config contains invalid auth type : '%s' -> Defaulting to %s", ldap_auth_type, type);
+ log.error(String.format("ConfigKey in Ldap Config contains invalid auth type : '%s' -> Defaulting to %s", ldap_auth_type, type));
}
String ldap_prov_type = config.getProperty(CONFIGKEY_LDAP_PROV_TYPE, "");
@@ -207,7 +211,15 @@ public class LdapLoginManagement {
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);
+ log.error(String.format("ConfigKey in Ldap Config contains invalid provisionning type : '%s' -> Defaulting to %s", ldap_prov_type, prov));
+ }
+
+ String ldap_deref_mode = config.getProperty(CONFIGKEY_LDAP_DEREF_MODE, "");
+ AliasDerefMode derefMode = AliasDerefMode.DEREF_ALWAYS;
+ try {
+ derefMode = AliasDerefMode.getDerefMode(ldap_deref_mode);
+ } catch (Exception e) {
+ log.error(String.format("ConfigKey in Ldap Config contains invalid deref mode : '%s' -> Defaulting to %s", ldap_deref_mode, derefMode));
}
if (AuthType.NONE == type && Provisionning.NONE == prov) {
@@ -250,7 +262,14 @@ public class LdapLoginManagement {
Dn baseDn = new Dn(config.getProperty(CONFIGKEY_LDAP_SEARCH_BASE, ""));
String searchQ = String.format(config.getProperty(CONFIGKEY_LDAP_SEARCH_QUERY, "%s"), user);
SearchScope scope = SearchScope.valueOf(config.getProperty(CONFIGKEY_LDAP_SEARCH_SCOPE, SearchScope.ONELEVEL.name()));
- EntryCursor cursor = conn.search(baseDn, searchQ, scope, "*");
+
+ EntryCursor cursor = new EntryCursorImpl(conn.search(
+ new SearchRequestImpl()
+ .setBase(baseDn)
+ .setFilter(searchQ)
+ .setScope(scope)
+ .addAttributes("*")
+ .setDerefAliases(derefMode)));
while (cursor.next()) {
try {
Entry e = cursor.get();
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=1632641&r1=1632640&r2=1632641&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 Fri Oct 17 17:48:00 2014
@@ -58,6 +58,9 @@ ldap_userdn_format=uid=%s,OU=Company,DC=
# Ldap provisioning type(NONE, AUTOCREATE, AUTOUPDATE)
ldap_provisionning=AUTOCREATE
+# Ldap deref mode (never, searching, finding, always)
+ldap_deref_mode=always
+
# 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