diff options
Diffstat (limited to 'src/main/java/org/openslx/imagemaster/db/LdapUser.java')
| -rw-r--r-- | src/main/java/org/openslx/imagemaster/db/LdapUser.java | 26 |
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(); |
