summaryrefslogtreecommitdiffstats
path: root/src/main/java/org/openslx/imagemaster/db/LdapUser.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/db/LdapUser.java')
-rw-r--r--src/main/java/org/openslx/imagemaster/db/LdapUser.java26
1 files changed, 15 insertions, 11 deletions
diff --git a/src/main/java/org/openslx/imagemaster/db/LdapUser.java b/src/main/java/org/openslx/imagemaster/db/LdapUser.java
index 17bf65e..1124696 100644
--- a/src/main/java/org/openslx/imagemaster/db/LdapUser.java
+++ b/src/main/java/org/openslx/imagemaster/db/LdapUser.java
@@ -14,6 +14,7 @@ import org.apache.directory.api.ldap.model.message.SearchScope;
import org.apache.directory.ldap.client.api.LdapConnectionConfig;
import org.apache.directory.ldap.client.api.LdapNetworkConnection;
import org.apache.log4j.Logger;
+import org.openslx.imagemaster.Globals;
import org.openslx.imagemaster.session.User;
import org.openslx.imagemaster.thrift.iface.AuthenticationError;
import org.openslx.imagemaster.thrift.iface.AuthenticationException;
@@ -63,24 +64,27 @@ public class LdapUser extends User
* @param login Login of user in the form "user@organization.com"
* @return instance of LDAPUser for matching entry from LDAP, or null if not found
*/
- @SuppressWarnings("finally")
public static LdapUser forLogin( final String login, final String password ) throws AuthenticationException {
- String username, organization, firstName, lastName, eMail, satelliteAddress;
+ String username, organization, firstName, lastName, eMail, satelliteAddress;
+
+ String[] temp = login.split("@");
+ if (temp.length != 2) throw new AuthenticationException( AuthenticationError.GENERIC_ERROR, "Login must be in form user@organization.com");
+ username = temp[0];
- // TODO: Read connection info from config file
LdapConnectionConfig ldapConfig = new LdapConnectionConfig();
ldapConfig.setTrustManagers(new MyTrustManager());
- ldapConfig.setLdapPort(636);
- ldapConfig.setLdapHost("bv1.ruf.uni-freiburg.de");
- ldapConfig.setUseSsl(true);
+ ldapConfig.setLdapPort(Integer.valueOf(Globals.properties.getProperty(Globals.ldapPort)));
+ ldapConfig.setLdapHost(Globals.properties.getProperty(Globals.ldapHost));
+ ldapConfig.setUseSsl(Boolean.valueOf(Globals.properties.getProperty(Globals.ldapSsl)));
LdapNetworkConnection connection = new LdapNetworkConnection( ldapConfig );
// bind connection
- // TODO: Hard coded stuff here too. binddn, search query etc. need to be configurable
try {
- if ( connection.connect() )
- connection.bind("uid=" + login + ",ou=people,dc=uni-freiburg,dc=de", password);
+ if ( connection.connect() ) {
+ String name = Globals.properties.getProperty(Globals.ldapBindQuery).replace("%", username);
+ connection.bind(name, password);
+ }
} catch (LdapException e1) {
log.warn( "Connection to LDAP failed: " + e1.getMessage() );
}
@@ -108,8 +112,8 @@ public class LdapUser extends User
// make search query
try {
- EntryCursor cursor = connection.search("ou=people,dc=uni-freiburg,dc=de", "(&(objectclass=person)(uid="
- + login + "))", SearchScope.SUBTREE);
+ EntryCursor cursor = connection.search(Globals.properties.getProperty(Globals.ldapSearchBaseDn),
+ Globals.properties.getProperty(Globals.ldapSearchFilter).replace("%", username), SearchScope.SUBTREE);
// only use the first result
cursor.next();
Entry entry = cursor.get();